MyException - 我的异常网
当前位置:我的异常网» VB » VB.NET and C# 区别

VB.NET and C# 区别

www.MyException.Cn  网友分享于:2015-07-29  浏览:0次
VB.NET and C# 差异
VB.NET Program Structure C#
Imports System
Namespace Hello    Class HelloWorld       Overloads Shared Sub Main(ByVal args() As String)          Dim name As String = "VB.NET"
         'See if an argument was passed from the command line           If args.Length = 1 Then name = args(0)
          Console.WriteLine("Hello, " & name & "!")       End Sub    End Class End Namespace
using System;
namespace Hello {    public class HelloWorld {       public static void Main(string[] args) {          string name = "C#";
         // See if an argument was passed from the command line          if (args.Length == 1)             name = args[0];
         Console.WriteLine("Hello, " + name + "!");       }    } }
VB.NET Comments C#
' Single line only Rem Single line only

// Single line /* Multiple     line  */ /// XML comments on single line /** XML comments on multiple lines */

VB.NET Data Types C#

Value Types Boolean Byte Char   (example: "A"c) Short, Integer, Long Single, Double Decimal Date

Reference Types Object String

Dim x As Integer Console.WriteLine(x.GetType())     ' Prints System.Int32 Console.WriteLine(TypeName(x))  ' Prints Integer

' Type conversion Dim d As Single = 3.5 Dim i As Integer = CType(d, Integer)   ' set to 4 (Banker's rounding) i = CInt(d)  ' same result as CType i = Int(d)    ' set to 3 (Int function truncates the decimal)

Value Types bool byte, sbyte char   (example: 'A') short, ushort, int, uint, long, ulong float, double decimal DateTime   (not a built-in C# type)

Reference Types object string

int x; Console.WriteLine(x.GetType());    // Prints System.Int32 Console.WriteLine(typeof(int));      // Prints System.Int32

// Type conversion float d = 3.5f; int i = (int)d;   // set to 3  (truncates decimal)

VB.NET Constants C#
Const MAX_STUDENTS As Integer = 25 

' Can set to a const or var; may be initialized in a constructor ReadOnly MIN_DIAMETER As Single = 4.93

const int MAX_STUDENTS = 25; 

// Can set to a const or var; may be initialized in a constructor readonly float MIN_DIAMETER = 4.93f;

VB.NET Enumerations C#
Enum Action   Start    [Stop]   ' Stop is a reserved word   Rewind   Forward End Enum
Enum Status   Flunk = 50   Pass = 70   Excel = 90 End Enum Dim a As Action = Action.Stop If a <> Action.Start Then _    Console.WriteLine(a.ToString & " is " & a)     ' Prints "Stop is 1"
Console.WriteLine(Status.Pass)     ' Prints 70 Console.WriteLine(Status.Pass.ToString())     ' Prints Pass
enum Action {Start, Stop, Rewind, Forward}; enum Status {Flunk = 50, Pass = 70, Excel = 90};
Action a = Action.Stop; if (a != Action.Start)   Console.WriteLine(a + " is " + (int) a);    // Prints "Stop is 1"
Console.WriteLine((int) Status.Pass);    // Prints 70 Console.WriteLine(Status.Pass);      // Prints Pass
VB.NET Operators C#

Comparison =  <  >  <=  >=  <>

Arithmetic +  -  *  / Mod \  (integer division) (raise to a power)

Assignment =  +=  -=  *=  /=  \=  ^=  <<=  >>=  &=

Bitwise And   Or   Not   <<   >>

Logical AndAlso   OrElse   And   Or   Xor   Not

Note: AndAlso and OrElse perform short-circuit logical evaluations

String Concatenation &   +

Comparison ==  <  >  <=  >=  !=

Arithmetic +  -  *  / %  (mod) (integer division if both operands are ints) Math.Pow(x, y)

Assignment =  +=  -=  *=  /=   %=  &=  |=  ^=  <<=  >>=  ++  --

Bitwise &   |   ^   ~   <<   >>

Logical &&   ||   &   |   ^   !

Note: && and || perform short-circuit logical evaluations

String Concatenation +

VB.NET Choices C#

greeting = IIf(age < 20, "What's up?", "Hello")

' One line doesn't require "End If", no "Else" If language = "VB.NET" Then langType = "verbose"

' Use : to put two commands on same line If x <> 100 And y < 5 Then x *= 5 : y *= 2  

' Preferred If x <> 100 And y < 5 Then   x *= 5   y *= 2 End If

' or to break up any long single command use _ If whenYouHaveAReally < longLine And itNeedsToBeBrokenInto2 > Lines Then _   UseTheUnderscore(charToBreakItUp)

' If x > 5 Then   x *= y ElseIf x = 5 Then   x += y ElseIf x < 10 Then   x -= y Else   x /= y End If

Select Case color   ' Must be a primitive data type   Case "pink", "red"     r += 1   Case "blue"     b += 1   Case "green"     g += 1   Case Else     other += 1 End Select

greeting = age < 20 ? "What's up?" : "Hello";

if (x != 100 && y < 5) {    // Multiple statements must be enclosed in {}   x *= 5;   y *= 2; }

No need for _ or : since ; is used to terminate each statement.

if (x > 5)   x *= y; else if (x == 5)   x += y; else if (x < 10)   x -= y; else   x /= y;

switch (color) {                          // Must be integer or string   case "pink":   case "red":    r++;    break;        // break is mandatory; no fall-through   case "blue":   b++;   break;   case "green": g++;   break;   default:    other++;   break;       // break necessary on default }

VB.NET Loops C#
Pre-test Loops:
While c < 10   c += 1 End While

Do Until c = 10    c += 1 Loop

Do While c < 10   c += 1 Loop

For c = 2 To 10 Step 2   Console.WriteLine(c) Next

Post-test Loops:
Do    c += 1 Loop While c < 10 Do    c += 1 Loop Until c = 10

'  Array or collection looping Dim names As String() = {"Fred", "Sue", "Barney"} For Each s As String In names   Console.WriteLine(s) Next

' Breaking out of loops Dim i As Integer = 0 While (True)   If (i = 5) Then Exit While   i += 1 End While

Pre-test Loops:   

// no "until" keyword while (c < 10)   c++;
for (c = 2; c < = 10; c += 2)   Console.WriteLine(c);

Post-test Loop:
do   c++; while (c < 10);

// Array or collection looping string[] names = {"Fred", "Sue", "Barney"}; foreach (string s in names)   Console.WriteLine(s);

// Breaking out of loops int i = 0; while (true) {   if (i == 5)     break;   i++; }

VB.NET Arrays C#

Dim nums() As Integer = {1, 2, 3}  For i As Integer = 0 To nums.Length - 1   Console.WriteLine(nums(i)) Next
' 4 is the index of the last element, so it holds 5 elements Dim names(4) As String names(0) = "David" names(5) = "Bobby"  ' Throws System.IndexOutOfRangeException
' Resize the array, keeping the existing values (Preserve is optional) ReDim Preserve names(6)

Dim twoD(rows-1, cols-1) As Single twoD(2, 0) = 4.5
Dim jagged()() As Integer = { _   New Integer(4) {}, New Integer(1) {}, New Integer(2) {} } jagged(0)(4) = 5

int[] nums = {1, 2, 3}; for (int i = 0; i < nums.Length; i++)   Console.WriteLine(nums[i]);
// 5 is the size of the array string[] names = new string[5]; names[0] = "David"; names[5] = "Bobby";   // Throws System.IndexOutOfRangeException
// C# can't dynamically resize an array.  Just copy into new array. string[] names2 = new string[7]; Array.Copy(names, names2, names.Length);   // or names.CopyTo(names2, 0); 

float[,] twoD = new float[rows, cols]; twoD[2,0] = 4.5f;  

int[][] jagged = new int[3][] {   new int[5], new int[2], new int[3] }; jagged[0][4] = 5;

VB.NET Functions C#

' Pass by value (in, default), reference (in/out), and reference (out)   Sub TestFunc(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)   x += 1   y += 1   z = 5 End Sub

Dim a = 1, b = 1, c As Integer   ' c set to zero by default  TestFunc(a, b, c) Console.WriteLine("{0} {1} {2}", a, b, c)   ' 1 2 5

' Accept variable number of arguments Function Sum(ByVal ParamArray nums As Integer()) As Integer   Sum = 0    For Each i As Integer In nums     Sum += i   Next End Function   ' Or use Return statement like C#
Dim total As Integer = Sum(4, 3, 2, 1)   ' returns 10

' Optional parameters must be listed last and must have a default value Sub SayHello(ByVal name As String, Optional ByVal prefix As String = "")   Console.WriteLine("Greetings, " & prefix & " " & name) End Sub
SayHello("Strangelove", "Dr.") SayHello("Madonna")

// Pass by value (in, default), reference (in/out), and reference (out) void TestFunc(int x, ref int y, out int z) {   x++;     y++;   z = 5; } 

int a = 1, b = 1, c;  // c doesn't need initializing TestFunc(a, ref b, out c); Console.WriteLine("{0} {1} {2}", a, b, c);  // 1 2 5

// Accept variable number of arguments int Sum(params int[] nums) {   int sum = 0;   foreach (int i in nums)     sum += i;   return sum; }

int total = Sum(4, 3, 2, 1);   // returns 10

/* C# doesn't support optional arguments/parameters.  Just create two different versions of the same function. */  void SayHello(string name, string prefix) {   Console.WriteLine("Greetings, " + prefix + " " + name); } 
void SayHello(string name) {   SayHello(name, ""); }

VB.NET Strings C#

Special character constants vbCrLf, vbCr, vbLf, vbNewLine vbNullString vbTab vbBack vbFormFeed vbVerticalTab ""

' String concatenation (use & or +) Dim school As String = "Harding" & vbTab school = school & "University" ' school is "Harding (tab) University"

' Chars Dim letter As Char = school.Chars(0)   ' letter is H letter = Convert.ToChar(65)                ' letter is A letter = Chr(65)                                 ' same thing Dim word() As Char = school.ToCharArray() ' word holds Harding

' No string literal operator   Dim msg As String = "File is c:\temp\x.dat" 

' String comparison Dim mascot As String = "Bisons" If (mascot = "Bisons") Then   ' true If (mascot.Equals("Bisons")) Then   ' true If (mascot.ToUpper().Equals("BISONS")) Then  ' true If (mascot.CompareTo("Bisons") = 0) Then   ' true

Console.WriteLine(mascot.Substring(2, 3)) ' Prints "son"

' String matching If ("John 3:16" Like "Jo[Hh]? #:*") Then   'true
Imports System.Text.RegularExpressions   ' More powerful than Like Dim r As New Regex("Jo[hH]. \d:*") If (r.Match("John 3:16").Success) Then   'true

' My birthday: Oct 12, 1973 Dim dt As New DateTime(1973, 10, 12) Dim s As String = "My birthday: " & dt.ToString("MMM dd, yyyy") Console.WriteLine(s)

' Mutable string Dim buffer As New System.Text.StringBuilder("two ") buffer.Append("three ") buffer.Insert(0, "one ") buffer.Replace("two", "TWO") Console.WriteLine(buffer)         ' Prints "one TWO three"

Escape sequences \n, \r \t \\ \"

// String concatenation string school = "Harding\t"; school = school + "University";   // school is "Harding (tab) University"

// Chars char letter = school[0];            // letter is H letter = Convert.ToChar(65);     // letter is A letter = (char)65;                    // same thing char[] word = school.ToCharArray();   // word holds Harding

// String literal string msg = @"File is c:\temp\x.dat"; // same as string msg = "File is c:\\temp\\x.dat";

// String comparison string mascot = "Bisons"; if (mascot == "Bisons")    // true if (mascot.Equals("Bisons"))   // true if (mascot.ToUpper().Equals("BISONS"))   // true if (mascot.CompareTo("Bisons") == 0)    // true

Console.WriteLine(mascot.Substring(2, 3));    // Prints "son"

// String matching // No Like equivalent - use regular expressions
using System.Text.RegularExpressions; Regex r = new Regex(@"Jo[hH]. \d:*"); if (r.Match("John 3:16").Success)   // true

// My birthday: Oct 12, 1973 DateTime dt = new DateTime(1973, 10, 12); string s = "My birthday: " + dt.ToString("MMM dd, yyyy");

// Mutable string System.Text.StringBuilder buffer = new System.Text.StringBuilder("two "); buffer.Append("three "); buffer.Insert(0, "one "); buffer.Replace("two", "TWO"); Console.WriteLine(buffer);     // Prints "one TWO three"

VB.NET Exception Handling C#

' Throw an exception Dim ex As New Exception("Something is really wrong.") Throw  ex 

' Catch an exception Try    y = 0   x = 10 / y Catch ex As Exception When y = 0 ' Argument and When is optional   Console.WriteLine(ex.Message) Finally   Beep() End Try

' Deprecated unstructured error handling On Error GoTo MyErrorHandler ... MyErrorHandler: Console.WriteLine(Err.Description)

// Throw an exception Exception up = new Exception("Something is really wrong."); throw up;  // ha ha

// Catch an exception try {    y = 0;   x = 10 / y; } catch (Exception ex) {   // Argument is optional, no "When" keyword    Console.WriteLine(ex.Message); } finally {   // Requires reference to the Microsoft.VisualBasic.dll   // assembly (pre .NET Framework v2.0)   Microsoft.VisualBasic.Interaction.Beep(); }

VB.NET Namespaces C#

Namespace Harding.Compsci.Graphics    ... End Namespace

' or

Namespace Harding   Namespace Compsci     Namespace Graphics        ...     End Namespace   End Namespace End Namespace

Imports Harding.Compsci.Graphics

namespace Harding.Compsci.Graphics {   ... }

// or

namespace Harding {   namespace Compsci {     namespace Graphics {       ...     }   } }

using Harding.Compsci.Graphics;

VB.NET Classes / Interfaces C#

Accessibility keywords Public Private Friend                    Protected Protected Friend Shared

' Inheritance Class FootballGame   Inherits Competition   ... End Class 

' Interface definition Interface IAlarmClock    ... End Interface

// Extending an interface  Interface IAlarmClock   Inherits IClock   ... End Interface

// Interface implementation Class WristWatch    Implements IAlarmClock, ITimer     ... End Class 

Accessibility keywords public private internal protected protected internal static

// Inheritance class FootballGame : Competition {   ... }

// Interface definition interface IAlarmClock {   ... }

// Extending an interface  interface IAlarmClock : IClock {   ... }

// Interface implementation class WristWatch : IAlarmClock, ITimer {    ... }

VB.NET Constructors / Destructors C#
Class SuperHero   Private _powerLevel As Integer
  Public Sub New()     _powerLevel = 0   End Sub
  Public Sub New(ByVal powerLevel As Integer)     Me._powerLevel = powerLevel   End Sub
  Protected Overrides Sub Finalize()     ' Desctructor code to free unmanaged resources     MyBase.Finalize()   End Sub End Class

class SuperHero {   private int _powerLevel;
  public SuperHero() {      _powerLevel = 0;   }
  public SuperHero(int powerLevel) {     this._powerLevel= powerLevel;    }
  ~SuperHero() {     // Destructor code to free unmanaged resources.     // Implicitly creates a Finalize method   } }

VB.NET Objects C#

Dim hero As SuperHero = New SuperHero ' or Dim hero As New SuperHero With hero   .Name = "SpamMan"   .PowerLevel = 3 End With

hero.Defend("Laura Jones") hero.Rest()     ' Calling Shared method ' or SuperHero.Rest()

Dim hero2 As SuperHero = hero  ' Both reference the same object hero2.Name = "WormWoman" Console.WriteLine(hero.Name)   ' Prints WormWoman

hero = Nothing    ' Free the object

If hero IsNothing Then _   hero = New SuperHero

Dim obj As Object = New SuperHero If TypeOf obj Is SuperHero Then _   Console.WriteLine("Is a SuperHero object.")

SuperHero hero = new SuperHero();

// No "With" construct hero.Name = "SpamMan"; hero.PowerLevel = 3;

hero.Defend("Laura Jones"); SuperHero.Rest();   // Calling static method

SuperHero hero2 = hero;   // Both reference the same object hero2.Name = "WormWoman"; Console.WriteLine(hero.Name);   // Prints WormWoman

hero = null ;   // Free the object

if (hero == null)   hero = new SuperHero();

Object obj = new SuperHero();  if (obj is SuperHero)   Console.WriteLine("Is a SuperHero object.");

VB.NET Structs C#

Structure StudentRecord   Public name As String   Public gpa As Single
  Public Sub New(ByVal name As String, ByVal gpa As Single)     Me.name = name     Me.gpa = gpa   End Sub End Structure

Dim stu As StudentRecord = New StudentRecord("Bob", 3.5) Dim stu2 As StudentRecord = stu  
stu2.name = "Sue" Console.WriteLine(stu.name)    ' Prints Bob Console.WriteLine(stu2.name)  ' Prints Sue

struct StudentRecord {   public string name;   public float gpa;
  public StudentRecord(string name, float gpa) {     this.name = name;     this.gpa = gpa;   } }

StudentRecord stu = new StudentRecord("Bob", 3.5f); StudentRecord stu2 = stu;  
stu2.name = "Sue"; Console.WriteLine(stu.name);    // Prints Bob Console.WriteLine(stu2.name);   // Prints Sue

VB.NET Properties C#

Private _size As Integer
Public Property Size() As Integer   Get     Return _size   End Get   Set (ByVal Value As Integer)     If Value < 0 Then       _size = 0     Else       _size = Value     End If   End Set End Property

foo.Size += 1

private int _size;
public int Size {   get {     return _size;   }   set {     if (value < 0)       _size = 0;     else       _size = value;   } } 

foo.Size++;

VB.NET Delegates / Events C#

Delegate Sub MsgArrivedEventHandler(ByVal message As String)

Event MsgArrivedEvent As MsgArrivedEventHandler

' or to define an event which declares a delegate implicitly Event MsgArrivedEvent(ByVal message As String)

AddHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback ' Won't throw an exception if obj is Nothing RaiseEvent MsgArrivedEvent("Test message") RemoveHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback

Imports System.Windows.Forms

Dim WithEvents MyButton As Button   ' WithEvents can't be used on local variable MyButton = New Button

Private Sub MyButton_Click(ByVal sender As System.Object, _   ByVal e As System.EventArgs) Handles MyButton.Click   MessageBox.Show(Me, "Button was clicked", "Info", _     MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub

delegate void MsgArrivedEventHandler(string message);

event MsgArrivedEventHandler MsgArrivedEvent;

// Delegates must be used with events in C#
MsgArrivedEvent += new MsgArrivedEventHandler(My_MsgArrivedEventCallback); MsgArrivedEvent("Test message");    // Throws exception if obj is null MsgArrivedEvent -= new MsgArrivedEventHandler(My_MsgArrivedEventCallback);

using System.Windows.Forms;

Button MyButton = new Button();  MyButton.Click += new System.EventHandler(MyButton_Click);

private void MyButton_Click(object sender, System.EventArgs e) {   MessageBox.Show(this, "Button was clicked", "Info",     MessageBoxButtons.OK, MessageBoxIcon.Information); }

VB.NET Console I/O C#

Console.Write("What's your name? ") Dim name As String = Console.ReadLine() Console.Write("How old are you? ") Dim age As Integer = Val(Console.ReadLine()) Console.WriteLine("{0} is {1} years old.", name, age)  ' or Console.WriteLine(name & " is " & age & " years old.")
Dim c As Integer c = Console.Read()    ' Read single char Console.WriteLine(c)   ' Prints 65 if user enters "A"

Console.Write("What's your name? "); string name = Console.ReadLine(); Console.Write("How old are you? "); int age = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("{0} is {1} years old.", name, age); // or Console.WriteLine(name + " is " + age + " years old.");

int c = Console.Read();  // Read single char Console.WriteLine(c);    // Prints 65 if user enters "A"

VB.NET File I/O C#

Imports System.IO

' Write out to text file Dim writer As StreamWriter = File.CreateText("c:\myfile.txt") writer.WriteLine("Out to file.") writer.Close()

' Read all lines from text file Dim reader As StreamReader = File.OpenText("c:\myfile.txt") Dim line As String = reader.ReadLine() While Not line Is Nothing   Console.WriteLine(line)   line = reader.ReadLine() End While reader.Close()

' Write out to binary file Dim str As String = "Text data" Dim num As Integer = 123 Dim binWriter As New BinaryWriter(File.OpenWrite("c:\myfile.dat"))  binWriter.Write(str)  binWriter.Write(num)  binWriter.Close()

' Read from binary file Dim binReader As New BinaryReader(File.OpenRead("c:\myfile.dat")) str = binReader.ReadString() num = binReader.ReadInt32() binReader.Close()

using System.IO;

// Write out to text file StreamWriter writer = File.CreateText("c:\\myfile.txt"); writer.WriteLine("Out to file."); writer.Close();

// Read all lines from text file StreamReader reader = File.OpenText("c:\\myfile.txt"); string line = reader.ReadLine(); while (line != null) {   Console.WriteLine(line);   line = reader.ReadLine(); } reader.Close();

// Write out to binary file string str = "Text data"; int num = 123; BinaryWriter binWriter = new BinaryWriter(File.OpenWrite("c:\\myfile.dat")); binWriter.Write(str); binWriter.Write(num); binWriter.Close();

// Read from binary file BinaryReader binReader = new BinaryReader(File.OpenRead("c:\\myfile.dat")); str = binReader.ReadString(); num = binReader.ReadInt32(); binReader.Close();

文章评论

什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
代码女神横空出世
代码女神横空出世
程序员必看的十大电影
程序员必看的十大电影
那些争议最大的编程观点
那些争议最大的编程观点
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员和编码员之间的区别
程序员和编码员之间的区别
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员都该阅读的书
程序员都该阅读的书
Java程序员必看电影
Java程序员必看电影
鲜为人知的编程真相
鲜为人知的编程真相
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我的丈夫是个程序员
我的丈夫是个程序员
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
如何成为一名黑客
如何成为一名黑客
10个调试和排错的小建议
10个调试和排错的小建议
编程语言是女人
编程语言是女人
老程序员的下场
老程序员的下场
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员应该关注的一些事儿
程序员应该关注的一些事儿
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
每天工作4小时的程序员
每天工作4小时的程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
我是如何打败拖延症的
我是如何打败拖延症的
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
一个程序员的时间管理
一个程序员的时间管理
中美印日四国程序员比较
中美印日四国程序员比较
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
总结2014中国互联网十大段子
总结2014中国互联网十大段子
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有