有没有人知道或关心为什么隐式类型仅限于局部变量?
var thingy = new Foo();
Run Code Online (Sandbox Code Playgroud)
但为什么不......
var getFoo() {
return new Foo();
}
Run Code Online (Sandbox Code Playgroud) 为什么不能在C#中的类级别拥有隐式类型的变量,以便立即分配这些变量?
即:
public class TheClass
{
private var aList = new List<string>();
}
Run Code Online (Sandbox Code Playgroud)
它只是尚未实施的东西,还是存在未能实现原因的概念/技术原因?
我的特殊问题:
我有一个字符串,它在配置类中指定了aribitrary类型
Config.numberType = "System.Foo";
在哪里Foo是类型Decimal或Double
我Type.GetType(Config.numberType)用来返回相应的类型.
如何从该类型中获得能够使用System.Foo.TryParse()?
一些其他相关的查询
TryParse()可以从System.Foo.TryParse()以及访问foo.TryParse().这是否意味着fooC#中的某种类?这对我来说似乎很奇怪int,double等等实际上不仅仅是修饰符关键字.var似乎并非普遍可用,即仅在本地范围等.可能重复:
为什么类字段不能是var?
我想避免为局部变量输入类似字段的复杂/长类型定义.
我想知道为什么不能这样做?
public class Foo
{
public var barField = new Dictionary<string, int>(); // Does not work
public void Method()
{
var barLocal = new Dictionary<string, int>(); // Works
}
}
Run Code Online (Sandbox Code Playgroud) 我收到错误"无法找到类型或命名空间名称'var'是否缺少using指令或程序集引用?""是的,我确实确保它全部小写.另外,我正在使用.Net framework 4.5.1我知道var在3.0之前不起作用.下面是我的代码的一部分,如果我取出var语句,没有错误或编译有问题.
using GalaSoft.MvvmLight;
using System;
using VKCatalyst.Model;
namespace VKCatalyst.ViewModel
{
public class MainViewModel : ViewModelBase
{
private readonly IDataService _dataService;
var i = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我看到过去已经解决了这个问题(我认为可能)但我认为留下像我这样多的新程序员可能是一个好主意,可能没有意识到他们'var'未被发现的原因是它不是一种方法.
我想初始化 ValueTuples 的静态只读数组,我想使用此答案中的方法:
var tupleList = new (int Index, string Name)[]
{
(1, "cow"),
(5, "chickens"),
(1, "airplane")
};
Run Code Online (Sandbox Code Playgroud)
但它不适用于静态成员,我必须声明 tupleList 的类型。我可以像这样将其作为元组来执行,但我不知道如何将其作为 ValueTuple 来执行:
static readonly Tuple<uint, string>[] tupleList= new Tuple<uint, string>[]
{
new Tuple<uint, string>(0x1, "string1"),
...
};
Run Code Online (Sandbox Code Playgroud)
但如果我能找出正确的类型,我更愿意使用更干净的格式,到目前为止,我已经尝试了多种类型,但没有成功。