Tag: 覆盖

如何覆盖txt文件中的数据?

可能重复: 任何人都可以告诉为什么在使用StreamWriter保存数据时仍然显示以前的数据 我有WPF C#应用程序,读取和写入.txt文件,我知道如何写行但行,但我如何覆盖已经是文件的文本。 这就是我要写入文本文件的下一行的内容,但是我希望不仅仅是写入下一行,谢谢。 using (StreamWriter newTask = new StreamWriter(“test.txt”, true)) { newTask.WriteLine(name[i].ToString()); }

在方法覆盖中更改params修饰符

我知道params修饰符(将数组类型的一个参数转换成所谓的“参数数组”)特别不是方法签名的一部分。 现在考虑这个例子: class Giraffid { public virtual void Eat(int[] leaves) { Console.WriteLine(“G”); } } class Okapi : Giraffid { public override void Eat(params int[] leaves) { Console.WriteLine(“O”); } } 编译时没有任何警告。 然后说: var okapi = new Okapi(); okapi.Eat(2, 4, 6); // will not compile! 给出一个错误( No overload for method ‘Eat’ takes 3 arguments )。 现在,我知道编译器将params修饰符转换为System.ParamArrayAttribute的应用程序到相关参数上。 通常,将一个属性集合应用于虚方法的参数,然后在具有不同属性集的派生类中的重写方法中装饰“对应”参数是没有问题的。 […]

覆盖“公共”inheritance成员时无法更改访问修饰符

我想做adapter模板。 AutoToTravelAdapter Move()中存在错误; 方法如何override和inherit Transport方法? 我尝试使用虚拟但它不起作用。 我更改为公共覆盖void两个适配器中的Move(),这是有效的! 谢谢, Zohar Peled ! using System; namespace Adapter { class Program { static void Main(string[] args) { Traveller traveller = new Traveller(); Transport camelTransport = new CamelToTravelAdapter(); Transport autoTransport = new AutoToTravelAdapter(); traveller.Travel(camelTransport); traveller.Travel(autoTransport); Console.Read(); } } public class Transport { virtual public void Move() { Console.WriteLine(“trans Moves”); […]

编辑界面时它叫什么?

我正在浏览LitJSON库。 在代码中有很多段,如 public class JsonData : IJsonWrapper, IEquatable #region ICollection Properties int ICollection.Count { get { return Count; } } #end region 对于我知道覆盖/重载如何工作的方法,但在上面的示例中,代码为:int ICollection.Count 我不熟悉方法签名的格式。 编码器是否试图明确声明其ICollection.Count接口? 你能解释一下这是什么“被称为”(它是否仍在重写?)。

自定义类在词典中用作键但未找到键

我有一个类,在下面显示,它用作Dictionary的键Dictionary我在尝试查找此字典中的任何键时遇到问题,它根本找不到它。 如您所见,我已经覆盖了Equals和GetHashCode 。 寻找我正在使用的密钥 ValuesAandB key = new ValuesAandB(A,B); if (DictionaryName.ContainsKey(key)) { … } 还有什么我想念的吗? 谁能指出我做错了什么? private class ValuesAandB { public string valueA; public string valueB; // Constructor public ValuesAandB (string valueAIn, string valueBIn) { valueA = valueAIn; valueB = ValueBIn; } public class EqualityComparer : IEqualityComparer { public bool Equals(ValuesAandB x, ValuesAandB y) { […]

内部抽象方法。 为什么有人会拥有它们?

我今天正在进行一些代码审查,并遇到了一些开发人员编写的旧代码。 它就是这样的 public abstract class BaseControl { internal abstract void DoSomething(); } 如果在同一个程序集中有一个派生类,它就可以工作 public class DerivedControl : BaseControl { internal override void DoSomething() { } } 但是在不同的程序集中派生基类会产生编译时错误 DerivedControl does not implement inherited abstract member ‘BaseControl.DoSomething() 这让我思考。 为什么有人会将方法声明为内部抽象?

为什么这样做? 方法重载+方法重写+多态

在以下代码中: public abstract class MyClass { public abstract bool MyMethod( Database database, AssetDetails asset, ref string errorMessage); } public sealed class MySubClass : MyClass { public override bool MyMethod( Database database, AssetDetails asset, ref string errorMessage) { return MyMethod(database, asset, ref errorMessage); } public bool MyMethod( Database database, AssetBase asset, ref string errorMessage) { // […]

根据子类从基类指定抽象方法的返回类型

我有以下结构: abstract class Base { public abstract List Get(); //What should be the generic type? } class SubOne : Base { public override List Get() { } } class SubTwo : Base { public override List Get() { } } 我想创建一个抽象方法,返回具体子类的任何类。 因此,从示例中可以看出, SubOne的方法应返回List而SubTwo的方法应返回List 。 我在Base类中声明的签名中指定了什么类型? [UPDATE] 谢谢你发布的答案。 解决方案是使抽象类具有通用性,如下所示: abstract class Base { public abstract List […]

如何在C#中将数据写入文本文件而不覆盖当前数据

问候,我似乎无法弄清楚如何在不覆盖文件的情况下将数据写入文件。 我知道我可以使用File.appendtext但我不知道如何将其插入到我的语法中。 这是我的代码: TextWriter tsw = new StreamWriter(@”C:\Hello.txt”); //Writing text to the file. tsw.WriteLine(“Hello”); //Close the file. tsw.Close(); 我希望每次运行程序时都写Hello,而不是覆盖以前的文本文件。 感谢您阅读本文。

覆盖List 的ToString()

我有一个类MyClass,我想覆盖List实例的方法ToString(): class MyClass { public string Property1 { get; set; } public int Property2 { get; set; } /* … */ public override string ToString() { return Property1.ToString() + “-” + Property2.ToString(); } } 我想要以下内容: var list = new List { new MyClass { Property1 = “A”, Property2 = 1 }, new MyClass { Property1 […]