我最近已经将一些代码从VB转换为C#,我注意到在VB中你可以用速记启动一个新的obj,这在C#中是可能的,还是你必须使用支持字段.
Public Property MyList As New List(Of String)
Run Code Online (Sandbox Code Playgroud)
似乎C#等价物是:
private List<String> _myList = new List<string>();
public List<String> MyList
{
get { return _myList; }
set { _myList = value; }
}
Run Code Online (Sandbox Code Playgroud)
注意*使用快捷命令'propfull'可以更轻松地写出这个的痛苦
我需要这样的
public class AA{
public AA(){}
[Default("hi")]
public string value1{get;set}
[Default(12)]
public int value2{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
用法:
AA a=new AA();
print(a.value1); //result: hi
print(a.value2); //result: 12
Run Code Online (Sandbox Code Playgroud)
是否有可能像这样创造?
我知道另一种方式
Public class AA{
public AA(){value1="hi";value2=12}
...
}
Run Code Online (Sandbox Code Playgroud)
除此以外
AA a=new AA(){value1="hi",value2=12};
Run Code Online (Sandbox Code Playgroud)
但我只需要属性.
所以对于用户控件,我有
public int Count { get; set; }
Run Code Online (Sandbox Code Playgroud)
这样我就可以用this.Count另一种方法了.麻烦的是,我想将Count的默认设置为类似的东西15.如何设置默认值?
嗨伙计们我在控制器中有一个功能,我收到一个表单的信息,实际上我有这个代码:
public Actionresult functionOne(string a, string b, string c = "foo" )
Run Code Online (Sandbox Code Playgroud)
我试着把它转换成类似的类
public class bar
{
public string a {get;set;}
public string b {get;set;}
public string c {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
并将它们作为对象接收
public Actionresult functionOne(bar b)
Run Code Online (Sandbox Code Playgroud)
此外,我试图将defaultvalue放在'c'但不工作,我试过这个:
public class bar
{
public string a {get;set;}
public string b {get;set;}
[System.ComponentModel.DefaultValue("foo")]
public string c {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
没有发生任何事情,我收到它 null
我也试过了
public class bar
{
public string a {get;set;}
public string b {get;set;}
public string c
{
get
{
return c;
}
set
{ …Run Code Online (Sandbox Code Playgroud) 我们如何组合c#访问器声明和初始化
List<string> listofcountries= new List<string>();
and
List<string>listofcountries {get;set;}
Run Code Online (Sandbox Code Playgroud)
有没有办法将这些与声明结合起来?
还有一个类似的问题在这里.然而,我的财产不是一个int或一个,string而是一个class拥有许多属性的财产.所以我想将默认值设置为属性的属性.
所以这是我的例子:
public class Claim
{
public Person Member { get; set; }
public Person Claimant { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
正如你可以看到我的arent性质int的或者string的把他们Person的.每个人都有很多属性,我想为每个对象设置其中一个属性的默认值.
例如,如果我创建一个像这样的新人:
Person Pete = new Person { PersonTypeID = 1 };
Run Code Online (Sandbox Code Playgroud)
如您所见,Person有一处PersonTypeID房产.可以说,我想设置值1的Member和2为Claimant默认值,每次Claim在实例化类.我怎样才能做到这一点?
class Log
{
public int LocationId { set { value = 1; } get; }
}
Run Code Online (Sandbox Code Playgroud)
当我像这样使用时,这会将Log的默认值设置为1:Log l = new log(); Console.Writeline(l.LocationId);
?
我知道使用房产的正常方式,但这也有效吗?
我有一个房产
public int active { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的数据库中的默认值为1.如果没有另外指定,我希望此属性默认为1
public partial class test
{
public int Id { get; set; }
public string test1 { get; set; }
public int active { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在c#6中看到了你能做到的
public int active { get; set; } = 1
Run Code Online (Sandbox Code Playgroud)
但我没有使用c#6 :(.感谢您的建议.(非常非常新的c#/ OOP)
下面,当我尝试使用_currentTemp变量时,应该通过自动属性功能自动生成,我得到一个未找到变量的消息:
该名称
_currentTemp在当前上下文中不存在.
使用{ get; set; }应该自动创建这个私有变量(_currentTemp),对吧?
public class DogTemperature
{
public double CurrentTemp { get; set; }
public DogTemperature(double dCurrentTemp)
{
_currentTemp = dCurrentTemp; //***this line***
}
}
Run Code Online (Sandbox Code Playgroud)