根据这些评论编辑:
你的意思是"财产"与"战场"吗?public String S1; vs public String S2 {get; 组; } - 达娜
完全是达娜,我的意思是一样的.- 阿萨德
阿萨德:你真的需要尝试用其他术语来描述你的意思,这样我们才能更好地理解你的问题.C#没有全局变量.您可以在C#中定义的字段不是全局的 - 它们是类类型的成员.- dthorpe
嗨fellas,
需要您对Fieldand 之间差异的专家意见Property.在我的项目中,我使用了某些全局变量,后来我改为"属性".我的经理问的是使用Properties变量代替的好处是什么Fields.
虽然我回复了他Property提供了一种安全/安全/间接访问,Field而不是直接修改它们,如果它们被声明public或protected.但请给我一些更有说服力的论据.
感谢致敬
@Asad:你应该把你的术语说得对:Fields不是Global Variables,C#没有全局变量(正如一些评论者提到的:你可以模拟全局变量,但你不应该这样做).
这将从XML文件加载一组值,并将它们放入类中进行存储.我试图弄清楚如何将值输出为列表,以便将它们放入列表框中.
我认为有一种简单的方法,比如.ToList()方法,或者能够通过类中的字符串(没有公共GetEnumerator).我已经能够发现Foreach隐藏了一些复杂性,但没有去做我想做的事情.
我一直在网上搜索没有用(可能没有正确的术语),不幸的是我在工作中留下了我的C#参考书:/
非常感谢指针朝着正确的方向发展,谢谢.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
namespace ThereIsOnlyRules
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
listBox1.Items.Clear();
string path = "characterXML.xml";
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
System.Xml.XmlDocument CXML = new System.Xml.XmlDocument();
CXML.Load(fs);
//Get the number of elements
XmlNodeList elemList = CXML.GetElementsByTagName("unit");
//foreach (var element in …Run Code Online (Sandbox Code Playgroud) 两者之间有什么区别,如果有的话
public int x;
Run Code Online (Sandbox Code Playgroud)
和
public int x { get; set; }
Run Code Online (Sandbox Code Playgroud)
?
是否有区别:
public T RequestedValue { get; set; }
Run Code Online (Sandbox Code Playgroud)
和
public T RequestedValue;
Run Code Online (Sandbox Code Playgroud)
?
取自此代码:
public class PropertyChangeRequestEventArgs<T>:EventArgs
{
public PropertyChangeRequestEventArgs(T pRequestedValue)
{
RequestedValue = pRequestedValue;
}
public T RequestedValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
C#中的字段和属性之间有什么区别?
有人可以解释这两个属性之间的差异吗?
public string City { get; set; }
public string City;
Run Code Online (Sandbox Code Playgroud) 我已经查看了至少10个关于获取/设置的SO问题,但找不到我的问题.所以我希望这不是重复.
public class myint
{
public int value{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
VS
public class myint
{
public int value;
}
Run Code Online (Sandbox Code Playgroud)
以上两个代码对我来说是一样的.如果我想使用myint类,我只需编写下面的代码,它就可以在任一类上运行.
myint A;
A.value=10;
Run Code Online (Sandbox Code Playgroud)
那么get/set的用途是什么?
亲爱的,哪一个是使用C#的最佳实践,为什么?
1.
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
Run Code Online (Sandbox Code Playgroud)
2.
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
3.
protected string name;
public string Name
{
get { return name; }
set { name = value; }
}
Run Code Online (Sandbox Code Playgroud)
请加上......
如果我用Java创建一个类,我总是被告知惯例是使一个类的所有字段都是私有的.如果我需要访问或更改它们,我可以创建一个accessor和mutator方法.我确实理解私有变量的重要性,因为它们有助于降低复杂性并允许封装.
我不明白的是,如果我创建一个公共访问者和mutator方法,那么那个变量是不是公共?为什么在任何人都可以访问私有变量的情况下仍然使用私有变量?
我还应该注意,我理解这些方法的重要性,但我想知道为什么我们懒得将变量设为私有,即使我们通过这些方法让任何人都可以访问它?
我的基类声明:
public double Value;
Run Code Online (Sandbox Code Playgroud)
我的派生类声明:
public new decimal Value;
Run Code Online (Sandbox Code Playgroud)
在使用关键字的提示中new,它说:“ ...Use the new keyword if hiding was intended.”。
这个解释似乎不太正确。当使用new关键字时,它并没有隐藏基变量。它使两个变量保持相同的名称,甚至具有不同的值。
我知道我这边存在设计问题,但我想知道为什么关键字并new没有真正隐藏基类变量。另外,new如果关键字意味着设计问题(更改派生类中的数据类型),为什么它甚至可用。这里使用dynamic一个选项吗?问题是:在大多数情况下,double都很好。但是在一些派生类中,它必须是decimal.
这个问题的重点是派生类中变量关键字的使用new,而不是真正讨论 double 和decimal 之间的差异。
谢谢。
Visual Studio 2019给出了以下关于 private 的建议_myNum:改为使用auto-property。起初我很想这样做,摆脱这个private变量并拥有带有private set. 但这并没有提供相同的功能:我想要一个公共属性来公开这条给定的信息,并且只在一个可以设置这条数据的地方 - 构造函数,因此是关键字readonly。
换句话说,我是对的吗?这个建议并不总是正确的?
public class Foo
{
public int MyNum { get { return _myNum; } }
private readonly int _myNum;
public Foo(int num)
{
_myNum = num;
}
}
Run Code Online (Sandbox Code Playgroud)
应用自动完成建议,代码如下所示:
public int MyNum { get; }
public Foo(int num)
{
MyNum = num;
}
Run Code Online (Sandbox Code Playgroud) c# refactoring code-analysis visual-studio roslyn-code-analysis
c# ×9
properties ×2
c#-3.0 ×1
duplicates ×1
field ×1
get ×1
inheritance ×1
java ×1
list ×1
listbox ×1
oop ×1
overriding ×1
refactoring ×1
set ×1