Tag: oop

参考类型与值类型

我正在阅读C#中的结构和类,我的理解结构是值类型,类是引用类型。 但是当我们将类对象作为参数传递给方法时,我对它们的行为方式感到有些困惑。 假设我有以下代码: public class Program { public static void Main(string[] args) { var program = new Program(); var person = new Person { Firstname = “Bob”, }; Console.WriteLine(person.Firstname); program.ChangeName(person); Console.WriteLine(person.Firstname); program.Kill(person); Console.WriteLine(person.Firstname); Console.Read(); } public void ChangeName(Person p) { p.Firstname = “Alice”; } public void Kill(Person p) { p = null; } } 当我将Person类的实例传递给Program.ChangeName()并将Program.ChangeName()的值更改为Alice […]

“获取或设置附件预期”是什么意思?

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; public partial class RepeaterEx2 : System.Web.UI.Page { SqlConnection cn = null; SqlDataAdapter da = null; DataSet ds = null; String strSqlQuery = String.Empty; protected void Page_Load(object sender, EventArgs e) { cn = new SqlConnection(); cn.ConnectionString = “Server=(local);Data base=TestDb;Uid=sa;Password=123”; if […]

你能在C#中获得一个类的合并属性吗?

假设我有以下一组类,是否可以合并DerivedClass的属性? 目前,如果我使用GetType()。GetCustomAttributes()方法传入trueinheritance,它将获取inheritance结构中的最高属性。 即[另一个(“鲍勃”)]和[我的(16)] 是否可以合并属性? 所以我最终会得到[My(16,“Male”)]和[Another(“Bob”)]的两个属性 我并不是说我会指定[My(16,“Male”)]的属性,而是返回一个年龄为16,性别为男性的属性。 public class MyAttribute : Attribute { public MyAttribute(int age) { Age = age; } public MyAttribute(int age, string gender) { Age = age; Gender = gender; } public int Age { get; set; } public string Gender { get; set; } } public class AnotherAttribute : Attribute { public […]

如何强制抽象类子实现静态方法?

可能重复: 如何强制inheritance类在C#中实现静态方法? 我理解抽象和静态是相反的,但我想强制派生类来实现静态方法。 我怎样才能做到这一点? 在SimonC之后编辑:在尝试描述我想要做的事情时,我意识到超类的静态方法将无法调用被覆盖的子类版本。 但olivier的替代解决方案看起来不错。

如何在C#中从另一个表单访问一个对象?

假设我有“Form1”和“Form2”,两者都是表格。 在Form1中有Main Class和Main方法。 在Form1中,我创建了一个对象,如: public myobject ob1 = new myobject(); 但是,在Form2中,我有这个代码: private void bdCancelar_Click(object sender, EventArgs e) { ob1.status = 1; // I can’t access ob1 !!! } 有帮助吗? 谢谢。

C#从另一个表单调用方法

嗨,我有2 Form Form1和Form2 Form1有一个表,有我的记录,并有一个Void用于刷新Form1中的表。 Form2是我的插入表单我是插入数据到sqlserver.I想要的是当我在Form2中保存记录后运行Form1刷新void。(当Form1,Form2打开时) 谢谢。

C#嵌套类访问父成员

是否可以访问子类中的父成员… class MainClass { class A { Whatever } class B { List SubSetList; public void AddNewItem(A NewItem) { Check MasterListHere ???? } } List MasterList; } 所以…我的主要课程将有一个主列表。 它也会有一堆B的实例。在B的每个实例中,我想向特定的B添加新的A,但前提是它们存在于主列表中。 我玩弄MasterList是静态的,它可以工作……直到我有多个MainClass实例……我将拥有它。 我可以将对MasterList的引用传递给B的每个实例,但是我最终会有多个这样的“MasterLists”,如果我不需要,我不想要传递大量的引用。

构造函数和inheritance

让我们在C#中举个例子 public class Foo { public Foo() { } public Foo(int j) { } } public class Bar : Foo { } 现在,除了构造函数之外,Foo的所有公共成员都可以在Bar中访问。 我做不了类似的事情 Bar bb = new Bar(1); 为什么构造函数不可inheritance? UPDATE 我知道我们可以链接构造函数,但我想知道为什么上面的构造无效。 我相信它应该是有正当理由的。

为什么私有成员变量可以被类实例更改?

class TestClass { private string _privateString = “hello”; void ChangeData() { TestClass otherTestClass = new TestClass(); otherTestClass._privateString = “world”; } } 这段代码在C#中编译,并且在PHP中等效,但有人可以解释为什么可以在这里更改otherTestClass._privateString的原因吗? 我原以为一个类的实例在任何情况下都不应该能够更改私有成员变量,并且尝试访问otherTestClass._privateString会导致“由于保护级别而无法访问”错误。 但事实并非如此,那么为什么在自己的类中实例化一个对象可以让你访问私有成员呢? 如果它,这不会破坏封装到一定程度? 还是我错过了一些明显的东西? (我不是在问上面的类设计是不是很好的做法,只是想知道它背后的理论。) 编辑 – 感谢您的回答和评论。 为了澄清,我也有兴趣知道能否做到这一点被认为是一个积极的function,或者它是否是更好的编译时检查/代码清晰度的必要权衡/因为大多数其他语言都是这样做或者其他什么。 在我看来,理想情况下编译器会阻止或警告你这个,但后来我远离语言设计师。 任何有关它如何通过这种方式的例子都可以让你做一些有用的事情(不会违反封装),否则很难或不可能。

我可以访问内部类中的外部类对象

我有三个这样的课程。 class A { public class innerB { //Do something } public class innerC { //trying to access objB here directly or indirectly over here. //I dont have to create an object of innerB, but to access the object created by A //ie innerB objInnerB = objB; //not like this innerB objInnerB= new innerB(); } […]