我听说eclipse可以为你生成访问器和mutator方法但是可以在不同的选项卡下找到它,在哪里可以自动生成访问器和mutator方法?
我想知道是否有可能在选择控件中改变事物的顺序而不必完全重建它?
是否有一个javascript函数,我可以在select中更改特定选项的"索引"?
谢谢
绑定的一个定义是它是用内存地址替换函数名的行为.
a)因此我假设早期绑定意味着在编译过程中函数调用被替换为内存地址,而在后期绑定时,这种替换发生在运行时期间?
b)为什么虚方法也被认为是早期绑定(因此在编译时找到目标方法,并创建将调用此方法的代码)?据我所知,使用虚方法只能在运行时解析对实际方法的调用而不是编译时间?!
感谢名单
编辑:
1)
A a=new A();
a.M();
Run Code Online (Sandbox Code Playgroud)
据我所知,在编译时不知道a在运行时将在堆上创建实例(因此在哪个内存地址).现在,通过早期绑定,在编译过程中将函数调用替换为内存地址.但是编译器如何用内存地址替换函数调用,如果它不知道a在运行时将在堆上的哪个对象被创建(这里我假设方法的地址a.M也将在同一个内存位置a)?
2)
v-table调用既不早,也不晚.相反,函数指针表中存在偏移量.偏移量在编译时固定,但是从哪个表中选择函数指针取决于对象的运行时类型(对象包含指向其v表的隐藏指针),因此最终的函数地址在运行时找到.
但假设类型的对象T是通过反射创建的(因此app甚至不知道类型的存在T),那么在编译时如何能够存在该类型对象的入口点?
1)假设:
• B1定义了方法virtualM()和nonvirtualM(),其中前者的方法是虚拟而后者是非虚拟
• B2从导出B1
• B2覆盖virtualM()
• B2内部组件被定义A
•应用程序app不必组件A的参考
在下面的代码应用程序中,app动态加载程序集A,创建类型的实例B2并调用方法virtualM()和nonvirtualM():
Assembly asemb=Assembly.Load(“A”);
Type t= asemb.GetType(“B2”);
B1 a = ( B1 ) Activator.CreateInstance ( “t” );
a.virtualM();
a.nonvirtualM();
Run Code Online (Sandbox Code Playgroud)
a)是否要求a.virtualM()考虑提前约束或延迟约束?
b)我假设a.nonvirtualM()在编译期间解决了一个调用?
2)术语后期绑定是指仅在运行时查找目标方法还是指在运行时创建给定类型的实例?
感谢名单
编辑:
1)
- 我假设在编译期间解析了对a.nonvirtualM()的调用?
- 是的.
如果我们有:
A a = new A();
a.M();
Run Code Online (Sandbox Code Playgroud)
据我所知,在编译时不知道a在运行时将在堆上创建实例(因此在哪个内存地址).现在,通过早期绑定,在编译过程中将函数调用替换为内存地址.但是编译器如何用内存地址替换函数调用,如果它不知道a在运行时将在堆上的哪个对象被创建(这里我假设方法的地址a.M也将在同一个内存位置a)? …
宏很好.模板很好.几乎无论它的工作原理都很好.
这个例子是OpenGL; 但该技术是C++特有的,并且不依赖于OpenGL的知识.
精确问题:
我想要一个表达式E; 我不需要指定唯一名称; 这样,在定义E的地方调用构造函数,并在块E的末尾调用析构函数.
例如,考虑:
class GlTranslate {
GLTranslate(float x, float y, float z); {
glPushMatrix();
glTranslatef(x, y, z);
}
~GlTranslate() { glPopMatrix(); }
};
Run Code Online (Sandbox Code Playgroud)
手动解决方案
{
GlTranslate foo(1.0, 0.0, 0.0); // I had to give it a name
.....
} // auto popmatrix
Run Code Online (Sandbox Code Playgroud)
现在,我不仅有glTranslate,还有很多其他的PushAttrib/PopAttrib调用.我宁愿不必为每个var提出一个唯一的名称.是否存在涉及宏模板的一些技巧......或者其他会自动创建变量的变量,在定义点调用构造函数; 和块结束时调用的析构函数?
谢谢!
在EWS Managed API中,可以轻松地为特定用户创建约会:
ExchangeService service = new ExchangeService();
service.Credentials = new NetworkCredentials ( "administrator", "password", "domain" );
service.AutodiscoverUrl(emailAddress);
Appointment appointment = new Appointment(service);
appointment.Subject = "Testing";
appointment.Start = DateTime.Now;
appointment.End = appointment.Start.AddHours(1);
appointment.Save();
Run Code Online (Sandbox Code Playgroud)
这将为管理员创建约会.但是说我想实际为另一个用户创建一个约会(不要将该用户添加为我约会的参与者).这可以通过EWS Managed API实现吗?
IronPython已经出现了一段时间了,所以当我今天早上安装Visual Studio 2010 RC1"Ultimate"时,我惊讶地发现它无法从安装程序中选择.相反,仍然需要去Codeplex.有人知道为什么没有包括在内吗?
如何迭代/访问COM coclass的vtable,它将实现其公开接口的方法?
我需要访问vtable的一部分,其中存储了其接口的公开方法的所有地址.
例如Math是COM对象,它的公开接口是"Operations","Sum"是这个接口的方法,我如何得到"Sum"的地址?
var trimmed = myStringArray.Select(s => s.Substring(0, 10));
Run Code Online (Sandbox Code Playgroud)
如果其中一个字符串长度不是10个字符,我会得到一个ArgumentOutOfRangeException.
在这种情况下,它很容易找到,我知道我可以做到
s.Substring(0, Math.Min(10, s.Length))
Run Code Online (Sandbox Code Playgroud)
对于更复杂的对象构造错误,这并不总是很容易看到.有没有办法通过异常处理来查看哪个字符串不够长?
我有以下代码:
class Program
{
static void Main(string[] args)
{
new Program().Run();
}
public void Run()
{
// works
Func<IEnumerable<int>> static_delegate = new Func<IEnumerable<int>>(SomeMethod<String>);
MethodInfo mi = this.GetType().GetMethod("SomeMethod").MakeGenericMethod(new Type[] { typeof(String) });
// throws ArgumentException: Error binding to target method
Func<IEnumerable<int>> reflection_delgate = (Func<IEnumerable<int>>)Delegate.CreateDelegate(typeof(Func<IEnumerable<int>>), mi);
}
public IEnumerable<int> SomeMethod<T>()
{
return new int[0];
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能为我的泛型方法创建委托?我知道我可以使用mi.Invoke(this, null),但由于我想要执行SomeMethod数百万次,我希望能够创建一个委托并将其缓存为一个小优化.