对不起!我深入代码!我忘了把编译器错误。与结构体的接口,通过引用使用泛型
这是新版本的代码简化!
这是错误的:
错误1为最佳重载方法匹配“IWeird.DataBase.ModifyData(REF IWeird.IDataTable)”有一些无效参数
错误2参数“1”:不能转换从“裁判IWeird.Periods”到“裁判IWeird.IDataTable”
问题: 我不能索引的接口通过与它的结构体, 我究竟做错了什么?
下面是新示例代码:
class PeriodsProcessor
{
public PeriodsProcessor()
{
Periods Data = new Periods();
DataBase DB = new DataBase();
Console.WriteLine(Data.Value);
DB.ModifyData(ref Data);
Console.WriteLine(Data.Value);
Console.ReadLine();
}
}
public interface IDataTable
{
string Value { get; set; }
}
public struct Periods : IDataTable
{
public string Value { get; set; }
}
public class DataBase
{
public void ModifyData(ref IDataTable data)
{
data.Value = "CHANGE";
}
}
class Program
{
static void Main(string[] args)
{
PeriodsProcessor PeriodsProcessor = new PeriodsProcessor();
}
}
你得到什么错误?编译器错误(如果是的话)?异常(如果是这样)?没有按预期工作(如果是的话,它在做什么)? – itowlson 2010-03-13 03:02:07
这段代码在2010RC编译得很好。你有什么错误,在什么方面? – JaredPar 2010-03-13 03:04:59
结构被称为“值类型”,因为它们是按值传递的,而不是通过引用。如果你想通过引用传递一些东西,传递一个引用类型。无论如何,可变结构是非常非常糟糕的编程实践;理想情况下,你最好不要在结构体上放置setter。 – 2010-03-13 03:17:36