我没有参加PDC 2008,但我听到一些消息称C#4.0被宣布支持Generic协方差和反差异.也就是说,List<string>
可以分配给List<object>
.怎么会这样?
在Jon Skeet的C#深度书中,解释了为什么C#泛型不支持协方差和反方差.它主要用于编写安全代码.现在,C#4.0改为支持它们.它会带来混乱吗?
有人知道有关C#4.0的细节可以给出一些解释吗?
我最近得到了以下代码作为一种帮助理解Polymorphism
和Inheritance
在OOP - C#中的谜题.
// No compiling!
public class A
{
public virtual string GetName()
{
return "A";
}
}
public class B:A
{
public override string GetName()
{
return "B";
}
}
public class C:B
{
public new string GetName()
{
return "C";
}
}
void Main()
{
A instance = new C();
Console.WriteLine(instance.GetName());
}
// No compiling!
Run Code Online (Sandbox Code Playgroud)
现在,在与提出拼图的其他开发者进行了长时间的长时间聊天后,我知道输出是什么,但我不会为你破坏它.我真正遇到的唯一问题是我们如何得到输出,代码如何逐步通过,继承什么等等.
我认为C
会返回,因为它似乎是定义的类.然后我通过我的脑袋了解是否B
会因为C继承而返回B
- 但B
也继承A
(这是我困惑的地方!).
任何人都可以解释多态性和继承如何在检索输出中发挥作用,最终显示在屏幕上?
为什么PHP的设计者决定使用句号/句号/"." 作为字符串连接运算符而不是更常见的加号"+"?
这有什么好处,或者有什么理由吗?或者他们只是喜欢?:O)
C#4.0中的通用差异已经实现,可以在没有异常的情况下编写以下内容(这将在C#3.0中发生):
List<int> intList = new List<int>();
List<object> objectList = intList;
Run Code Online (Sandbox Code Playgroud)
[非功能性示例:请参阅Jon Skeet的回答]
我最近参加了一个会议,其中乔恩斯基特给通用差异的很好的概述,但我不知道我完全得到它-我理解的重要性in
和out
关键词,当谈到禁忌和协变,但我我很好奇幕后发生的事情.
执行此代码时CLR会看到什么?是隐式转换List<int>
为List<object>
或者它是否只是构建在我们现在可以在派生类型之间转换为父类型?
出于兴趣,为什么在以前的版本中没有引入这个,主要的好处是什么 - 即真实世界的使用?
关于Generic Variance的这篇文章的更多信息(但问题非常过时,寻找真实的,最新的信息)
switch语句由"case"组成......
但其他所有案件都有"其他"案例吗?
从来没有找到答案......
例如:
switch ($var){
case "x":
do stuff;
break;
case "y":
do stuff;
break;
else: // THIS IS WHAT I WOULD LIKE
do stuff;
break;
}
Run Code Online (Sandbox Code Playgroud) 当将使用相机拍摄的图像从相机意图返回到父意图(使用putExtra作为byte [])时,我在logcat中得到Failed binder事务错误.我不明白为什么,它不像它的大位图或任何东西.它只发生在我用大量光线拍照时,因为那时字节[]更大.离开相机意图时会发生错误.有没有人在我的代码中看到错误?
这是相机意图的代码:
package example.imaging.ape;
import java.io.IOException;
import java.util.Iterator;
import java.util.Set;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
public class TakePicture extends Activity implements SurfaceHolder.Callback{
Camera mCamera;
Boolean mPreviewRunning = false;
int imageLayoutHeight;
int imageLayoutWidth;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setup camera surface
getWindow().setFormat(PixelFormat.TRANSLUCENT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.cameralayout);
SurfaceView mSurfaceView = (SurfaceView) …
Run Code Online (Sandbox Code Playgroud) 我正在为一家从未提交错误报告的公司开发软件,这是唯一的抱怨,"因此而且不起作用." 有时我可以弄清楚他们在谈论什么,有时候不会.我对屏幕截图和更多细节的请求充耳不闻(一旦他们拍了截图,然后将其打印出来,用传真机扫描并通过电子邮件发送给我的老板作为TIFF).
我有几种方法可以提供我需要的数据.以下是我采取的步骤:
我可以采用哪些其他方法来捕获错误,并收集更多关于它们的数据,以便我知道如何重现它们?
我一直在搜索各种MySQL网站,希望找到一些可以让我转过头来的东西:
var parameters = "a,b,c,d"; // (Could be any number of comma-delimited values)
Run Code Online (Sandbox Code Playgroud)
进入此(假设我的参数以某种方式成为您在IN块中看到的值):
SELECT * FROM mytable WHERE parametertype IN('a', 'b', 'c', 'd');
Run Code Online (Sandbox Code Playgroud)
但我没有取得很大的成功!我发现的最好的网站是:dev.mysql.com,它讨论了基于分隔符的字符串拆分(在我的情况下是',')虽然它没有找到任何答案...
有没有人知道将逗号分隔的字符串拆分成可在此上下文中使用的字符串组的好方法?
当我在IE中查看一个非常简单的HTML文件时,我发现了一个非常奇怪的行为.我无法解释这个......
采取以下HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style>
.iWantaBorder
{
border:red solid 1px ;
}
</style>
</head>
<body>
<select class="iWantaBorder">
<option>1</option>
</select>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
将html文件另存为桌面.在IE8中查看时,选择菜单有一个红色边框.
现在将文件复制到IIS 5.1或IIS6中的网站或虚拟目录.
在IE8中浏览到该文件...没有红色边框.
谁能告诉我这里发生了什么?我真的想要这个菜单上的边框.认为这应该是简单的说实话,但我很困惑!