我现在很困惑C#.
我有一堆类,比如A,B和C,它们都来自"Parent"类.我有一个函数,它接受类型为Parent的参数,并且根据调用它的对象是哪个子类,我希望它调用另一个方法.
目前,我正在考虑使用字典映射类型代表委托,但这看起来很愚蠢,尽管我现在可以想出来.
问题是当我在函数中时,我只知道它是Parent类型,我可以使用GetType来获取我拥有的子类,这将允许字典.否则我可能会使用函数重载.
真正的类型转换似乎是最好的方法,允许我使用函数重载,这将不那么冗长,但我不知道我是如何做到的,或者它是否会起作用.
任何推荐?
为什么需要将值(例如short)转换为string,然后转换为Int32.为什么它不能从short转换为Int 32?
根据GoDaddy的FAQ,他们支持Microsoft的SignTool,但没有提到mage.exe.Mage.exe用于签署应用程序,但我无法弄清楚mage.exe是否使用SignTool.如果有人使用GoDaddy的ClickOnce代码签名证书,我们将非常感谢您的简短确认.
编译64位应用程序时,为什么strlen()返回64位整数?我错过了什么吗?
我理解strlen()返回一个size_t类型,根据定义,这不应该改变,但是......为什么strlen 需要返回一个64位整数?
该函数旨在与字符串一起使用.照这样说:
程序员通常会创建数千兆字节或多字节的字符串吗?如果他们这样做了,他们是否需要更好的方法来确定字符串长度而不是搜索NULL字符?
我认为这很荒谬,事实上,我们可能需要一个带回调的StrLenAsync()函数来处理在40TB字符串中搜索NULL的超长进程.听起来很愚蠢?是的,strlen()返回一个64位整数!
当然,提出的StrLenAsync()函数是一个笑话.
我需要通过例子来解释这个:
是否有在数据库表中指定DateTime和BIT的最佳实践或首选项?
在我的数据库中,我有一个Widget表.我需要知道一个小部件是否"已关闭"并且它是"关闭日期"业务规则说如果一个小部件关闭,它必须有一个关闭日期.如果窗口小部件未关闭,则不应具有"关闭日期".
为了设计这个,我可以做到以下几点:
(例1):
CREATE TABLE [Widget]
(
[WidgetID] INT IDENTITY(1,1)
,[ClosedDate] DATETIME NULL
)
Run Code Online (Sandbox Code Playgroud)
或(例2):
CREATE TABLE [Widget]
(
[WidgetID] INT IDENTITY(1,1)
,[IsClosed] BIT NOT NULL CONSTRAINT [DF_Widget_IsClosed] DEFAULT (0)
,[ClosedDate] DATETIME NULL
)
Run Code Online (Sandbox Code Playgroud)
我认为示例1更清晰,因为它不用担心会减少一个列.但是,每当我需要评估Widget是否已关闭时,我需要一个额外的步骤来确定ClosedDate列是否为非NULL.
示例2创建了额外的开销,因为现在我必须保持IsClosed和ClosedDate值同步.
在设计这样的东西时有最好的做法吗?对于示例2,查询表格会更有效吗?我有什么理由选择一种设计而不是另一种设计?
注意:我将通过ORM工具和存储过程访问此值.
我想在Win7上与2008版本并行安装Visual Studio 2010.这会引起一些问题吗?
有没有办法将类添加到类中,但允许它仍然由基类继承?
我有以下内容
public class ListWithRandomize<T> : List<T> {
public void Randomize() { // Randomize function}
}
Run Code Online (Sandbox Code Playgroud)
我将要有一堆需要随机化的List对象.是否可以将List对象设置为ListFithRandomize对象?我想我可以将randomize函数设置为static并让它以List <>作为参数,但我希望将它作为类的方法...如果可能的话.
谢谢.
我的任务如下:使用char*name和int age创建类Person.使用动态分配内存为变量,析构函数,函数init和友元函数显示实现构造函数.然后将此类转换为header和cpp文件,并在其他程序中实现.好的,这是我的Person类:
#include <iostream>
using namespace std;
class Person {
char* name;
int age;
public:
Person(){
int size=0;
cout << "Give length of char*" << endl;
cin >> size;
name = new char[size];
age = 0;
}
Person::~Person(){
cout << "Destroying resources" << endl;
delete [] name;
delete take_age();
}
friend void show(Person &p);
int* take_age(){
return &age;
}
char* take_name(){
return name;
}
void init(char* n, int a) {
name = n;
age = a;
}
};
void show(Person …Run Code Online (Sandbox Code Playgroud) GDI +使用WCHAR而不是WinAPI允许的CHAR.通常我可以这样做:
char *str = "C:/x.bmp";
Run Code Online (Sandbox Code Playgroud)
但我如何为wchar做这个?我不能这么做
wchar_t *file = "C:/x.bmp";
Run Code Online (Sandbox Code Playgroud)
谢谢
当用c#编译类时,函数是否与它一起存储,从而增加了所需的内存?
换句话说,是否值得创建两个类1来存储数据,一个用于存储具有数据类实例的所有函数?
因此,如果我有200个数据实例,那么它将与数据+函数类的200个实例不同(需要内存)吗?
我在使用javascript(jQuery)更新ASP:UpdatePanel时遇到问题.这就是我的意思.
我正在使用隐藏的按钮技巧,因为我似乎无法获得__doPostBack技巧的更新面板的ClientID.
<asp:UpdatePanel runat="server" ID="pnlUpdate">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnUpdate" />
</Triggers>
<ContentTemplate>
<asp:UpdateProgress runat="server" AssociatedUpdatePanelID="pnlUpdate" DynamicLayout="false" DisplayAfter="100">
<ProgressTemplate>
<img alt="Laddar..." src="img/loader.gif" width="16" height="11"/>
</ProgressTemplate>
</asp:UpdateProgress>
<div style="display:none;">
<asp:Button runat="server" ID="btnUpdate" CommandName="Refresh" CommandArgument='<%# Eval("Id") %>'/>
</div>
<asp:Repeater runat="server" Id="rptrEnquiry">
...
</asp:Repeater>
<%= DateTime.Now.ToString() %>
<a href="javascript:jQuery('#<%= btnUpdate.ClientID %>').trigger('click')&&undefined;">Fire!</a>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
在处理btnUpdate的代码隐藏中(在GridView RowCommand中),当按下btnUpdate时,rptrEnquiry会反弹.
如果我直接按下按钮(虽然没有隐藏)一切都很完美(显示更新程序并更新日期并更新转发器.
但是,如果我单击fire link并通过javascript触发按钮,则只更新日期,但不显示updateprogress,并且转发器不会反弹.在调试时我可以看到反弹代码已经执行,但它的效果不在更新中.
c# ×4
oop ×4
c++ ×3
.net ×2
64-bit ×1
asp.net ×1
c ×1
certificate ×1
clickonce ×1
code-signing ×1
header-files ×1
inheritance ×1
jquery ×1
standards ×1
t-sql ×1
types ×1