Visual C#,无法将我的struct用作属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual C#,无法将我的struct用作属性相关的知识,希望对你有一定的参考价值。
我创建了一个包含几个自制属性的用户控件。当我尝试将属性类型设置为内置结构(如Point或Size)时,它显示正常!
public Point myProperty { get; set; }
但是当我将它设置为我自己的结构时,它不起作用!它变成PriceInput.PriceInput + myStruct(PriceInput是命名空间)
myStruct看起来像
public struct myStruct
{
public int A {get;set;}
public int B {get;set;}
public int C {get;set;}
public int D {get;set;}
}
为什么!?我错过了什么!?非常感谢你的帮助!
如果你想要一个有意义的输出,你应该覆盖ToString
:
public struct myStruct
{
public int A {get;set;}
public int B {get;set;}
public int C {get;set;}
public int D {get;set;}
public override string ToString()
{
return $"{A}:{B}:{C}:{D}";
}
}
Object.ToString
只返回对象类型的完全限定名称。
默认情况下,每个类或结构只会在任何输出中打印出自己的名称,无论是控制台还是其他任何输出。在你的情况下,这是PriceInput.PriceInput+myStruct
。这是因为运行时不知道要打印什么。想象一下,你的结构中会有更多属性。是否应该全部输出?或者只是几个?它们应该如何格式化?这就是为什么运行时决定不猜测并简单地打印出类`/ structs名称。
为了避免这种情况(也就是Point
也这样做),覆盖结构中的ToString
方法:
public struct myStruct
{
public override string ToString()
{
return "Whatever";
}
}
如果不重写此方法,则从object
获取基本实现,它只返回类型名称,如上所示。
以上是关于Visual C#,无法将我的struct用作属性的主要内容,如果未能解决你的问题,请参考以下文章
如果无法创建 vcxproj 文件,是不是可以将 MSBuild 用作带有 Visual Studio 代码的 C++ 编译器?
“未指定的错误”Visual Studio 2008 64 位
c_cpp 如何将结构用作函数返回类型或函数的参数? - 来自https://playground.arduino.cc/Code/Struct