小编mir*_*iri的帖子

不确定何时使用抽象属性,何时不使用

我不确定什么看起来更好,或者我什么时候在抽象类和属性中使用,或何时使用非抽象属性.我将尝试做一个简单的例子.假设我有这个:

abstract class Human
{
  public GenderType Gender { get; set; }
  public string Name { get; set; }
  public Date Born { get; set; }
  public bool IsNerd { get; set; }

  abstract public void Speak();
  abstract public void Sleep();
  abstract public void AnoyingPeopleOnStackOverflow();
  //... so on
}

class Peter : Human
{
  //Peter is special, he got a second name
  //But thats all, everything else is the same as like on other humans
  public string SecondName { get; …
Run Code Online (Sandbox Code Playgroud)

.net c# oop properties abstract

40
推荐指数
4
解决办法
4万
查看次数

我应该如何在C#中使用Properties?

我不确定因为在Java中getter/setter看起来有点不同但是用"c#方式"来编写这些东西?

选项a.)

    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private int time;

    public int Time
    {
        get { return time; }
        set { time = value; }
    }
Run Code Online (Sandbox Code Playgroud)

湾)

    private string _name;
    private int _time;

    public string name
    {
        get { return _name; }
        set { _name = value; }
    }

    public int time
    {
        get { return _time; }
        set { _time = value; }
    }
Run Code Online (Sandbox Code Playgroud)

C.) …

.net c# properties

10
推荐指数
3
解决办法
473
查看次数

私有抽象方法有些麻烦

假设我做了一个大班Car- 我希望这个班级是抽象的.摘要因为这是我的主要类,所以没有人应该创建这个类的对象.这个类应该只作为"骨干".

我希望只能从子类中创建类Car(比如梅赛德斯,法拉利......).因为每辆车都应该有像StartEngine我把它放入大班的方法.假设我有这个:

abstract class Car
{
  public string Name { get; set; }

  public abstract void StartEngine();
  private abstract bool CheckGasoline();
  //and so on...
}

class Mercedes : Car
{
  private override bool CheckGasoline()
  {
  //somehow check gasoline and return whatever...
  }

  public override void StartEngine()
  {
    if (CheckGasoline())
      //start engine...
  }
}
Run Code Online (Sandbox Code Playgroud)

好吧,这不会奏效.由于私人摘要:

virtual or abstract members cannot be private
Run Code Online (Sandbox Code Playgroud)

所以生病使每个私人方法都受到保护:

abstract class Car
{
  public string Name { get; set; } …
Run Code Online (Sandbox Code Playgroud)

.net c# abstract-class

10
推荐指数
2
解决办法
2万
查看次数

iText/iTextSharp用于商业用途:不推荐?

我不是很擅长使用许可证,这就是为什么我想在这里询问有关iTextSharp以及将其用于商业用途的选项.

我想开发一个软件来创建PDF并将这些东西上传到某些DB上并打印出来.现在它应该是免费的,但也许有一天它可能变得商业化.据我所知iTextSharp不是LGLP它是AGPL,而AGPL用于商业软件不是一个好的解决方案.是对的吗?我不能使用iTextSharp(免费)商业软件?

据我所知有PDFSharp,我听说它不像iText那么完美,但它应该足够了.有什么建议?

.net c# pdf itext

7
推荐指数
2
解决办法
2万
查看次数

我可以在创建对象之前计算属性吗?在构造函数中?

在创建对象之前,我可以计算类中的属性数量吗?我可以在构造函数中执行此操作吗?

class MyClass
{  
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }

    public MyClass()
    {
        int count = //somehow count properties? => 3
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

.net c# constructor properties

6
推荐指数
2
解决办法
7283
查看次数

Visual Studio + TortoiseSVN够用吗?或者我也应该使用AnkhSVN插件吗?

我正在使用Visual Studio 2010.我想SVN我可以使用TortoiseSVN,我只是将我的VS项目文件夹添加到存储库并完成.也许我可以使用tortoiseSVN插件,但它仍然是测试版和旧版.

其他人在谈论AnkhSVN + TortoiseSVN.我真的需要结合这两个工具吗?我只是问,在我从这里开始一些SVN之前,我想知道最聪明的方式.有什么建议?谢谢!

编辑:好的,我真的不明白.如果你告诉我我应该同时使用 - 如果我想提交新的东西,我该怎么办?我首先用Ankh然后用TortoiseSVN提交它?一切都会正常工作没有错误?Okey我只是困惑,因为我从来没有使用svn(特别是其中两个同时)那么多.

.net svn ankhsvn visual-studio-2010

6
推荐指数
1
解决办法
5573
查看次数

添加属性到列表?

我有一个包含大量对象的列表List<MyObjects>- 我遍历此列表并读取对象.多数民众赞成.我现在只重新说明,如果我可以为此List添加1个特殊值,那将是多么令人敬畏 - 不是一个Object,只是一个值的某个值(一个字符串).

我现在可以创建一个类

class Needless
{
  public List<MyObjects> MyList { get; set; }
  public string MyValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但我试图避免这种情况.我真的需要一个带有输入的字符串每个List<MyObjects>任何想法吗?

.net c# list

5
推荐指数
1
解决办法
4950
查看次数

DrawToBitmap - System.ArgumentException:参数无效

我创造了一个Label,有时我正在使用.DrawToBitmap().我不知道为什么,但在我运行我的程序一段时间后(.DrawToBitmap()经常调用)我得到了异常:

System.ArgumentException: Parameter is not valid.
   at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
   at System.Drawing.Bitmap..ctor(Int32 width, Int32 height)
Run Code Online (Sandbox Code Playgroud)

不知怎的,我不能经常调用这个函数.如果我从根本上尝试这个:

while(true)
{

  System.Windows.Forms.Label label = new Label();

  label.Font = new Font("Arial", 20);
  label.Text = "test";

  try
  {
    Bitmap image = new Bitmap(300, 500);
    label.DrawToBitmap(image, label.ClientRectangle);
  }
  catch (Exception e)
  {
    Console.WriteLine(e);
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到了5-6秒(1000-2000个电话)的异常.问题是什么?怎么避免这个?

编辑:谢谢你们的想法Dispose()- 不知何故,如果我使用它,一切都很完美label.即使我不在Bitmap上使用它也没关系.这两个答案都很棒,我只能接受其中一个:(

.net c# system.drawing bitmap

5
推荐指数
1
解决办法
9990
查看次数

更改log4net配置以创建每x小时的新日志

如果我想每x小时一个日志,我仍然不知道如何更改log4net.我有这个:

      <log4net>
        <root>
          <level value="DEBUG"/>
          <appender-ref ref="LogFileAppender"/>
        </root>
        <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="C:\log.txt"/>
          <param name="AppendToFile" value="true"/>
          <rollingStyle value="Size"/>
          <maxSizeRollBackups value="10"/>
          <maximumFileSize value="100MB"/>
          <staticLogFileName value="true"/>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n"/>
          </layout>
        </appender>
  </log4net>
Run Code Online (Sandbox Code Playgroud)

我有一个日志,我总是在这一个log.txt中添加日志 - 现在我想让我们每天都说一个新的日志文件(24小时)或者每12小时一个新的日志.在配置中我需要更改什么?对我的配置有什么建议吗?谢谢

.net logging log4net

5
推荐指数
1
解决办法
6543
查看次数

按特定顺序读取文件?

我想从不同的文件夹中读取很多文件.现在我问自己什么是最聪明的方式.现在我正在使用

    DirectoryInfo directory = new DirectoryInfo(myPath);
    FileInfo[] files = directory.GetFiles("*.txt");
Run Code Online (Sandbox Code Playgroud)

所以我有一个包含所有文件的列表,我可以遍历它们(逐个阅读).

这样好吗?有没有办法重新排序列表,以便我始终在最顶层的最旧文件.这可能是一个很好的想法,因为我想开始阅读最旧的文件,最后是最新的文件.有任何想法吗?

.net c# file

3
推荐指数
1
解决办法
161
查看次数