我不确定什么看起来更好,或者我什么时候在抽象类和属性中使用,或何时使用非抽象属性.我将尝试做一个简单的例子.假设我有这个:
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) 我不确定因为在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.) …
假设我做了一个大班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) 我不是很擅长使用许可证,这就是为什么我想在这里询问有关iTextSharp以及将其用于商业用途的选项.
我想开发一个软件来创建PDF并将这些东西上传到某些DB上并打印出来.现在它应该是免费的,但也许有一天它可能变得商业化.据我所知iTextSharp不是LGLP它是AGPL,而AGPL用于商业软件不是一个好的解决方案.是对的吗?我不能使用iTextSharp(免费)商业软件?
据我所知有PDFSharp,我听说它不像iText那么完美,但它应该足够了.有什么建议?
在创建对象之前,我可以计算类中的属性数量吗?我可以在构造函数中执行此操作吗?
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)
谢谢
我正在使用Visual Studio 2010.我想SVN我可以使用TortoiseSVN,我只是将我的VS项目文件夹添加到存储库并完成.也许我可以使用tortoiseSVN插件,但它仍然是测试版和旧版.
其他人在谈论AnkhSVN + TortoiseSVN.我真的需要结合这两个工具吗?我只是问,在我从这里开始一些SVN之前,我想知道最聪明的方式.有什么建议?谢谢!
编辑:好的,我真的不明白.如果你告诉我我应该同时使用 - 如果我想提交新的东西,我该怎么办?我首先用Ankh然后用TortoiseSVN提交它?一切都会正常工作没有错误?Okey我只是困惑,因为我从来没有使用svn(特别是其中两个同时)那么多.
我有一个包含大量对象的列表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>任何想法吗?
我创造了一个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上使用它也没关系.这两个答案都很棒,我只能接受其中一个:(
如果我想每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小时一个新的日志.在配置中我需要更改什么?对我的配置有什么建议吗?谢谢
我想从不同的文件夹中读取很多文件.现在我问自己什么是最聪明的方式.现在我正在使用
DirectoryInfo directory = new DirectoryInfo(myPath);
FileInfo[] files = directory.GetFiles("*.txt");
Run Code Online (Sandbox Code Playgroud)
所以我有一个包含所有文件的列表,我可以遍历它们(逐个阅读).
这样好吗?有没有办法重新排序列表,以便我始终在最顶层的最旧文件.这可能是一个很好的想法,因为我想开始阅读最旧的文件,最后是最新的文件.有任何想法吗?