Int32 i = new Int32();
i = 10;
这里我是struct数据类型,我们直接在其中分配一个值
struct myst
{
}
myst mySt = new myst();
myst = 10;
这里我需要分配一个属性,所以问题是Int32
如何能够直接向结构对象分配值?
答案 0 :(得分:6)
如果我正确理解了您(并且我不知道是否可以)。要将隐式分配给自定义类型,您将需要实现隐式运算符
implicit operator (C# Reference)
implicit关键字用于声明隐式用户定义类型 转换运算符。使用它可以在 用户定义的类型和其他类型(如果可以保证转换) 不会造成数据丢失。
示例
struct FunkyStruct
{
public FunkyStruct(int d) { val = d; }
public int val;
// ...other members
// User-defined conversion from Digit to double
public static implicit operator int(FunkyStruct d)
{
return d.val;
}
// User-defined conversion from double to Digit
public static implicit operator FunkyStruct(int d)
{
return new FunkyStruct(d);
}
}
用法
public static void Main()
{
FunkyStruct s;
s = 10;
Console.WriteLine(s.val);
}
更新
Console.WriteLine(s),它应该像显示int一样打印10 实现这一目标
它已经做到了
答案 1 :(得分:1)
myst不是Int32。您可以在这里做的一件事是,在struct中创建Int32变量并为其分配值。
struct myst
{
public Int32 a { get; set; }
}
static void Main(string[] args)
{
myst mySt = new myst();
mySt.a = 10;
}