我偶尔听说过,通用泛型,Java并没有把它弄好.(最近的参考,这里)
原谅我的经验不足,但是什么会让他们变得更好?
几个月前有人问我这个问题,我无法详细解释.C#中的引用类型和值类型有什么区别?
我知道,价值类型int,bool,float,等和引用类型delegate,interface等等.或者,这是不对的,太?
你能以专业的方式向我解释一下吗?
我使用C#泛型查看了一些示例代码.为什么以及何时应该使用它们?
所有的例子都很复杂.我需要一个简单明了的例子,让我开始使用C#泛型.
我需要在两种技术之间进行比较:使用泛型类型和扩展类型.我不是指一般的比较,我的意思是在这种特殊情况下我需要为一个名为类的类添加一些功能ClassA
使用泛型类型
使用泛型类型(Where T: ClassA)并实现泛型方法
使用扩展方法
使用ClassA添加其扩展方法
public static class Helper
{
public static void MethodOne(this ClassA obj, )
{
//
}
}
Run Code Online (Sandbox Code Playgroud)我需要知道 :
Repository Pattern?例如,在此实现中,为什么我们不向全局类添加扩展方法Entity?这是一个更广泛的问题,以我的具体例子为例。到此为止的代码相当复杂,所以我希望这已经足够了。
C#中什么情况下两个相同的int不相等?
1005 == 1005 //false
Run Code Online (Sandbox Code Playgroud)
specConversion首先作为传递的 string ,其中确定(类的属性)spec的类型,然后将其转换为该类型。这似乎按预期工作,因为此时两个变量具有相同的类型。我不确定其中任何一个是否与最初的问题相关:为什么这两个 int 值不相等?yspecspecConversion
考虑这个例子:
IList<string> _lstColl = new[] { "Alex", "Sam", "Gates", "Riaz" };
Run Code Online (Sandbox Code Playgroud)
我可以将它初始化为:
string[] _stringBag = new[] { "Alex", "Sam", "Gates", "Riaz" };
Run Code Online (Sandbox Code Playgroud)
在这里使用接口有什么好处?
美好的一天.泛型通常使用如下:
class MyList<T>
{
public T data;
public MyList<T> nextElement;
}
Run Code Online (Sandbox Code Playgroud)
为什么不使用以下:
class MyList
{
public object data;
public MyList nextElement;
}
Run Code Online (Sandbox Code Playgroud)
甚至:
class MyStructure<T> where T : SomeCommonClass
{
public T data;
public MyStructure<T> nextElement;
public MyStructure<T> prevElement;
}
Run Code Online (Sandbox Code Playgroud)
而是:
class MyStructure
{
public SomeCommonClass data;
public MyStructure nextElement;
public MyStructure prevElement;
}
Run Code Online (Sandbox Code Playgroud)
更新:
好吧,我担心你没有完全理解我,甚至降低了我的问题.没有泛型的示例,它正常工作:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MyNode nodeButton = new MyNode("nodeButton", …Run Code Online (Sandbox Code Playgroud) 我有一个叫做的课RootObject:
public class RootObject
{
public string Name { get; set; }
public int Age { get; set; }
public int Address { get; set; }
}
public void getdata()
{
WebRequest request = WebRequest.Create("http://addresstojson.com/json.json");
WebResponse response = await request.GetResponseAsync();
using (var stream = new StreamReader(response.GetResponseStream()))
{
json = JsonConvert.DeserializeObject<RootObject>(stream.ReadToEnd());
}
}
Run Code Online (Sandbox Code Playgroud)
在方法的最后一个语句中getdata(),传递类型:
JsonConvert.DeserializeObject</*here*/>(Stream.ReadToEnd())
Run Code Online (Sandbox Code Playgroud)
我想将类型作为参数传递给getdata(RootObject)方法.
有没有办法在C#中使用泛型来做到这一点?