我知道这已经多次讨论了,但我不确定我是否真的理解为什么 Java和C#设计者选择从这些语言中省略这个功能.我对如何制定变通方法(使用接口,克隆或任何其他替代方法)不感兴趣,而是对决策背后的基本原理感兴趣.
从语言设计的角度来看,为什么这个功能被拒绝了?
PS:我正在使用诸如"省略"之类的词语,有些人可能觉得这些词语不合适,因为C#是用加法(而不是减法)方法设计的.但是,我使用这样的词是因为在设计这些语言之前C++中存在这个特性,所以从程序员的工具箱中删除它就省略了.
我有两个类声明如下:
class Object1
{
protected ulong guid;
protected uint type;
public Object1(ulong Guid, uint Type)
{
this.guid = Guid;
this.type = Type
}
// other details omitted
}
class Object2 : Object1
{
// details omitted
}
Run Code Online (Sandbox Code Playgroud)
在客户端代码中,我希望能够像这样创建每个对象的实例:
Object1 MyObject1 = new Object1(123456789, 555);
Object2 MyObject2 = new Object2(987654321, 111);
Run Code Online (Sandbox Code Playgroud)
我怎样才能让Object2像这样使用Object1的构造函数?谢谢.
它很容易读取XML文件并获得精确的节点文本,但如何使用新值更新该节点?
阅读:
public static String GetSettings(SettingsType type, SectionType section)
{
XmlTextReader reader = new XmlTextReader(HttpContext.Current.Request.MapPath(APPSETTINGSPATH));
XmlDocument document = new XmlDocument();
document.Load(reader);
XmlNode node = document.SelectSingleNode(
String.Format("/MyRootName/MySubNode/{0}/{1}",
Enum.Parse(typeof(SettingsType), type.ToString()),
Enum.Parse(typeof(SectionType), section.ToString())));
return node.InnerText;
}
Run Code Online (Sandbox Code Playgroud)
来写 ...?
public static void SetSettings(SettingsType type, SectionType section, String value)
{
try
{
XmlTextReader reader = new XmlTextReader(HttpContext.Current.Request.MapPath(APPSETTINGSPATH));
XmlDocument document = new XmlDocument();
document.Load(reader);
XmlNode node = document.SelectSingleNode(
String.Format("/MyRootName/MySubNode/{0}/{1}",
Enum.Parse(typeof(SettingsType), type.ToString()),
Enum.Parse(typeof(SectionType), section.ToString())));
node.InnerText = value;
node.Update();
}
catch (Exception ex)
{
throw new Exception("Error:", ex); …Run Code Online (Sandbox Code Playgroud) 我有下课
public abstract class AbsTrinityEvent
{
public event IsSelected OnSelectedEvent;
bool _IsSelected;
ITrinityEvent _objTrinityEvent;
public AbsTrinityEvent(ITrinityEvent objTrinityEvent)
{
_objTrinityEvent = objTrinityEvent;
}
public ITrinityEvent TrinityEventObj
{
set
{
_objTrinityEvent = value;
}
get
{
return _objTrinityEvent;
}
}
public int EventRefID
{
get
{
return _objTrinityEvent.EventRefID;
}
}
public string EventDescription
{
get
{
return _objTrinityEvent.EventDescription;
}
}
public string EventDateTime
{
get
{
return _objTrinityEvent.EventDateTime;
}
}
public string Site
{
get
{
return _objTrinityEvent.Site;
}
}
public int …Run Code Online (Sandbox Code Playgroud) 我目前在Postgres上运行查询:
SELECT * FROM addenda.users WHERE users.username LIKE '%\_'
Run Code Online (Sandbox Code Playgroud)
但是,然后返回仅以下划线结尾的条目,我得到所有结果,无论它是否包含下划线.
运行下面的查询会返回一个只是下划线的用户名,因此转义确实有效:
SELECT * FROM addenda.users WHERE users.username LIKE '\_'
Run Code Online (Sandbox Code Playgroud)
并运行以下查询返回一个以特定字母结尾的用户名:
SELECT * FROM addenda.users WHERE users.username LIKE '%s'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
bpp =每像素位数,因此对于R/G/B/A,32bpp表示8/8/8/8.
像.NET有这些"System.Drawing.Imaging.PixelFormat"的枚举.
现在,一旦我的图形具有Bitmap或Image对象,我将如何将其保存为文件/我将使用哪种格式?
什么图像文件格式(JPEG/GIF/PNG)支持低位深度,如16bpp或8bpp (而不是通常的32bpp或24bpp)
我最近在C完成了大学课程.所以我当然缺乏经验.
一些大学倾向于教他们的学生安全编程,或至少一些元素.还有,即使视频(摘自这里).
在C中,复制字符串,据我所知 - strcpy或string.h函数.如何在日常编程中安全地使用它?你有一些函数,它们处理分配以防止缓冲区溢出?有C的CERT安全编码标准.它提供示例和合规解决方案:
int main(int argc, char *argv[]) {
/* ... */
char prog_name[128];
strcpy(prog_name, argv[0]);
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
他们的替代方案是:
int main(int argc, char *argv[]) {
/* ... */
char *prog_name = (char *)malloc(strlen(argv[0])+1);
if (prog_name != NULL) {
strcpy(prog_name, argv[0]);
}
else {
/* Couldn't get the memory - recover */
}
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
从这里开始,第二个例子.
但据我所知,这更具挑战性,更多代码,更多工作.为什么没有人改变图书馆本身?或者至少为什么没有人提供安全的替代库或功能,以正确的方式处理这个?
感谢阅读,愿
我正在寻找令人满意的单元测试我的.NET DAL类的选项; 因为它们是DAL类,所以它们使用ADO.NET直接访问数据库.目前我使用MSSQL数据库的一个实例进行测试,但是想知道有哪些更快的选择 - 因为单元测试需要尽快运行,内存解决方案将是理想的选择.
我还应该提一下,我已经把自己绑在TSQL上,因为我只会使用微软平台.
我在Delphi 2007项目中得到了一组级联的"EClassNotFound"错误.似乎并不是由于缺少Name属性值而导致的情况,并且虽然在初始化部分中添加RegisterClass(XXX)会修复手边的EClassNotFound错误,但另一个看似无限期地跟随它.
我终于在文本编辑器中打开了DFM文件,它看起来很可能已损坏(表单元素名称中有很多非ASCII字符,而且与我以前在DFM文件中看到的相比,看起来非常"非结构化" ).(我会在这里张贴相同的但不确定没关系,非aSCII,所以会推迟).
表单加载很好,似乎编译/语法检查也好,但一旦我运行它,麻烦.
回到SVN的早期版本,看起来它已经处于这种状态一段时间了,这让我觉得A)DFM文件不是我的问题,或者B)Delphi表格流是一个很大的错误 - 容忍/健全(奖金问题:这是什么?).
如果DFM文件出现问题并且已损坏,则回滚将必须回滚,这将是昂贵的.鉴于IDE仍然可以加载它,是否有任何可以清理文件的实用程序?
或者,我是否完全偏离DFM作为主要嫌疑人?
感谢大家的投入.忘了带有DFM文件的二进制/文本选项,这很有帮助.看起来DFM本身没有损坏.
仍然有EClassError问题.re:它缺少属性值,或者引用不存在的属性等,还有一个问题:该类是否给出了错误(当前TnxSqlUpdateObject,但如果经验到目前为止,可能更多等待)通常/总是真正的"罪魁祸首"类/对象?
例如,现在我的主窗体有四个引用TnxSqlUpdateObject,w /那些实际上放在窗体上.如果我将RegisterClass(TnxSqlUpdateObject)放在初始化部分中,它对于该EClassNotFound错误运行正常,但随后继续执行下一个错误(在本例中为TStringField).
在这种情况下,我重新安装了NexusDB组件,并使用我认为可能存在问题的一些组件构建了一个新项目.它编译并运行良好,直到我从我的真实项目中添加了另一个表单(反过来,不幸地引用了很多其他表单).
那么,听起来我真正的问题是如何有条不紊地诊断和修复任何和所有EClassNotFound错误?