小编Dan*_*May的帖子

如何在C#4.0中实现通用协方差和Contra-variance?

我没有参加PDC 2008,但我听到一些消息称C#4.0被宣布支持Generic协方差和反差异.也就是说,List<string>可以分配给List<object>.怎么会这样?

在Jon Skeet的C#深度书中,解释了为什么C#泛型不支持协方差和反方差.它主要用于编写安全代码.现在,C#4.0改为支持它们.它会带来混乱吗?

有人知道有关C#4.0的细节可以给出一些解释吗?

c# covariance contravariance generic-variance c#-4.0

106
推荐指数
2
解决办法
4万
查看次数

为什么这个多态C#代码会打印它的作用?

我最近得到了以下代码作为一种帮助理解PolymorphismInheritance在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(这是我困惑的地方!).


题:

任何人都可以解释多态性和继承如何在检索输出中发挥作用,最终显示在屏幕上?

.net c# oop polymorphism inheritance

68
推荐指数
2
解决办法
6931
查看次数

为什么要完全停止,"." 而不是加号,"+",用于PHP中的字符串连接?

为什么PHP的设计者决定使用句号/句号/"." 作为字符串连接运算符而不是更常见的加号"+"?

这有什么好处,或者有什么理由吗?或者他们只是喜欢?:O)

php syntax perl concatenation operators

34
推荐指数
8
解决办法
1万
查看次数

C#4.0中的通用差异

C#4.0中的通用差异已经实现,可以在没有异常的情况下编写以下内容(这将在C#3.0中发生):

 List<int> intList = new List<int>();
 List<object> objectList = intList; 
Run Code Online (Sandbox Code Playgroud)

[非功能性示例:请参阅Jon Skeet的回答]

我最近参加了一个会议,其中乔恩斯基特给通用差异的很好的概述,但我不知道我完全得到它-我理解的重要性inout关键词,当谈到禁忌和协变,但我我很好奇幕后发生的事情.

执行此代码时CLR会看到什么?是隐式转换List<int>List<object>或者它是否只是构建在我们现在可以在派生类型之间转换为父类型?

出于兴趣,为什么在以前的版本中没有引入这个,主要的好处是什么 - 即真实世界的使用?

关于Generic Variance的这篇文章的更多信息(但问题非常过时,寻找真实的,最新的信息)

.net-4.0 covariance contravariance generic-variance c#-4.0

16
推荐指数
3
解决办法
3200
查看次数

开关功能中是否有"Else Case"可供使用?

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)

php switch-statement

12
推荐指数
1
解决办法
2万
查看次数

返回摄像机图像时失败的Binder事务

当将使用相机拍摄的图像从相机意图返回到父意图(使用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)

android

11
推荐指数
1
解决办法
7155
查看次数

错误跟踪方法

我正在为一家从未提交错误报告的公司开发软件,这是唯一的抱怨,"因此而且不起作用." 有时我可以弄清楚他们在谈论什么,有时候不会.我对屏幕截图和更多细节的请求充耳不闻(一旦他们拍了截图,然后将其打印出来,用传真机扫描并通过电子邮件发送给我的老板作为TIFF).

我有几种方法可以提供我需要的数据.以下是我采取的步骤:

  • 一个bug跟踪器,可以在其中输入错误(只输入一个)
  • 记录错误.每次发生错误时,它都会将其写入日志文件,由NLog提供
  • 程序有一个尝试捕获它的记录异常的初始方法.
  • 当捕获到意外的异常时,我会截取该程序的屏幕截图.
  • 记录对所有表单的访问,并在某种程度上记录他们正在执行的操作.(虽然这通常只有在成功时才有效)

我可以采用哪些其他方法来捕获错误,并收集更多关于它们的数据,以便我知道如何重现它们?

language-agnostic debugging error-handling

10
推荐指数
1
解决办法
1392
查看次数

MySQL Split在"SELECT WHERE IN"语句中使用

我一直在搜索各种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,它讨论了基于分隔符的字符串拆分(在我的情况下是',')虽然它没有找到任何答案...

有没有人知道将逗号分隔的字符串拆分成可在此上下文中使用的字符串组的好方法?

c# mysql sql delimited-text

7
推荐指数
1
解决办法
2435
查看次数

找出一个单词出现的次数

dogdogdogdogsdogdogdogs

如果没有正则表达式,"狗"和"狗"会出现多少次?

php string search

4
推荐指数
1
解决办法
2108
查看次数

选择菜单上的IE8和边框css属性

当我在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中浏览到该文件...没有红色边框.

谁能告诉我这里发生了什么?我真的想要这个菜单上的边框.认为这应该是简单的说实话,但我很困惑!

html css iis internet-explorer

3
推荐指数
1
解决办法
2万
查看次数