Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 强制转换变量以设置新值_C# - Fatal编程技术网

C# 强制转换变量以设置新值

C# 强制转换变量以设置新值,c#,C#,我试图将输出视为“200”。我从一个平面文件中有大约400个不同设置的变量名,我需要加载配置,但很难转换类型来设置设置 private double test1 = 100; private void button1_Click(object sender, EventArgs e) { double testNewType = (double)test1; testNewType = 200; Debug.Print(te

我试图将输出视为“200”。我从一个平面文件中有大约400个不同设置的变量名,我需要加载配置,但很难转换类型来设置设置

    private double test1 = 100;

    private void button1_Click(object sender, EventArgs e) {

        double testNewType = (double)test1;

        testNewType = 200;

        Debug.Print(test1.ToString());
    }

您正在打印test1,而不是testNewType

Debug.Print(test1.ToString())

Debug.Print(testNewType.ToString())


如果您试图通过引用传递,我不确定C#是否可以通过双打来传递,而且在您投射时肯定不能。如果您想设置字段,可以通过反射来传递:

/*
获取类型,也可以使用
var type=this.GetType();
*/
var type=typeof(您的classnamewithfields);
/*
添加BindingFlags.DeclaredOnly
如果只想在当前类中设置声明的字段(忽略继承)
*/
var fields=type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
foreach(字段中的变量字段){
//targetObject是要设置其值的对象,可以是
字段设置值(targetObject,newValue);
}
您还可以使用
dynamic
type,如下所示:

dynamic obj=yourObject;
obj.fieldName=值;

double不是引用类型,所以
testNewType
只是内容的副本。所以要从文本文件加载设置,唯一的方法是键入400 if语句,检查double变量的名称并设置其值?这是否回答了您的问题?所以要从文本文件加载设置,唯一的方法是键入400 if语句,检查双变量的名称并设置其值?您可以像在其他注释中一样使用反射。您还可以创建一个哈希表(或字典,不确定它在c#中的名称)并将变量名作为索引,如果这样做对您更有意义的话。然后,您可以使用文本文件中的名称指定值,并在以后使用相同的名称引用它们。