1 / 63

Introduction to C#

Introduction to C#. With a GIS focus With Python examples to help with transition Provide a C# foundation for ArcGIS customization with ArcObjects. Why customize ArcGIS ? Workflow. ArcGIS application like ArcMap does not do EXACTLY what you want to do “out-of-the-box ”.

salim
Download Presentation

Introduction to C#

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to C# • With a GIS focus • With Python examples to help with transition • Provide a C# foundation for ArcGIS customization with ArcObjects

  2. Why customize ArcGIS ? Workflow. ArcGIS application like ArcMap does not do EXACTLY what you want to do “out-of-the-box”. ArcObjects provides the programming framework customize ArGIS applications to do exactly what you want.

  3. Extending ArcGISAdd-ins, C#, & ArcObjects • Adding toolbars, buttons, tools, etc. • ArcGIS 10.1+ provides tools for making Python Add-ins ArcGIS 10.0 did not (Free webinar) • ArcObjects SDK for the Microsoft .NET Framework provides access to more than Python

  4. Customization example Capture point features at midpoint of drawn line automatically calculating and storing line orientation and providing easy tools for selecting type and adding dip angle.

  5. ESRI Customization Examples • 200+ ESRI examples in Samples folder i.e. C:\Program Files\ArcGIS\DeveloperKit10.2\Samples\ArcObjectsNet

  6. From Python to C# • IDE Solutions, Projects • Runtime environment • Code containers • Core language and framework • Types • Variables, operators, expressions, statements • Functions • Scope • Booleans • Flow control – branching and looping • Standard modules and libraries

  7. IDE Projects PyScripterpsproj Visual Studio sln and csproj Solution (sln) can contain one or more Projects (csproj) and other files Project contains one or more related files • One or more related files referenced by psproj file Solution/Project(s) not optional Project is optional

  8. Visual Studio IDE Creating .NET Solution and Projects with Visual Studio 2010

  9. Projects … … because any application worth building usually has more than one .cs file and other files (e.g. images, cursors, etc.)

  10. Solutions … … because Projects must be part of a Solution Visual Studio Solution (.sln) * Projects (.csproj)

  11. Folder structure for application development Download …

  12. Creating a srcfolder - Create a New Project … Blank Solution, in src- Save - Exit Visual Studio - Move files up one level into src - Delete solution folder Solutions can include code from other CLS languages (e.g. VB.NET)

  13. Adding a Project to a Solution

  14. Project templates EXE EXE ESRI Add-ins and Extensions are compiled into DLL’s DLL Most common Project templates

  15. Sln and Project code

  16. StartUp Project is the first project to run when the application is run Class Library Projects cannot be set as the StartUp Project StartUp Project

  17. Runtime requirements Python C# EXE run from command line or double click Cannot be run interactivelyNo >>> here. Compiled assembly (EXE) can be run directly Requires .NET Framework that can support assembly • PY file run from command line or double click • Can be run interactively>>> x = 1 • Requires Python interpreter (Python.exe) to run • Requires appropriate version of Python.exe

  18. Runtime – from code to CPU Python C# Code files in Visual Studio Solution/Project(s) compiled to Common Intermediate Language (CIL) Assembly (EXE) EXE run from command line or double-clicked Common Language Runtime (CLR) transforms CIL into machine language CLR and CPU run program • Python file run at command line or double-clicked • Interpreted by Python.exeinto byte code • Byte code transformed into machine language by Python runtime • CPU runs machine language program

  19. .NET Framework Overview CLS(Common Language Specification) C#, VB.NET, Managed C++, J# CLS specifes rules .NET languages must follow to create .NET code that will reference the.NET Framework Class Libraries (.NET DLL Assemblies) and .NET CTS. Framework Class Libraries UI Web Form WinForm WPF Services WCF WorkFlow Data Access ADO.NET Entity Framwork LINQ to SQL Framework Base Classes & CTS (Common Type System) IO, Collections, Security, Threading, etc. .NET compilers will compile.NET code into CIL stored in.NET assemblies (EXE or DLL) Compilers CIL(Common Intermediate Language) .NET CLR will perform JIT (Just-In-Time compilation) tonative machine code and ensure that the .NET assembly runs properly and securely. CLR(Common Language Runtime) Windows OS Win32, IIS, MSMQ

  20. Statements • Code is interpreted or compiled one statement at a time • A statement can be composed of one or more expressions • Expressions are composed of one or more of the following: variables, operators, literals, function calls, and types

  21. Statements Python C# ; marks end of statement Indentation is cosmetic msg = “Multi-line statement does not need continuation char”; • No end of statement marker • Indentation is critical msg = “Multi-line statement \ needs line continuation char”

  22. Statement context Python C# Statements cannot be run outside of functions Statements can be run outside of functions • Solution • Project • Namespace • Class • Method 1 keyword 1 literal 4 keywords 4 names 1 literal 1 4 Statement

  23. Keywords Python C# ~80 • ~30

  24. Types Python C# string, char sbyte, byte, short, ushort, int, uint, long, ulong float, double, decimal bool (true or false) • str • int • float • bool (True or False)

  25. C# Types – Value types true, false 0 – 255 ‘a’, ‘b’, ‘c’, ‘\t’, etc. 28-29 significant digits, ± 7.9 x 1028 15-16 significant digits, ± 5.0 x 10324 to ±1.7 x 10308 List of constants of same type - byte, sbyte, short, ushort, int, uint, long, or ulong 7 significant digits, ±3.4 x 1038 -2,147,483,648 to 2,147,483,647 –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 -128 to 127 -32,768 to 32,767 Group of related value types 0 to 4,294,967,295 0 to 18,446,744,073,709,551,615 0 to 65,535

  26. C# Types – Reference types Value types require a static amount of memory (e.g. byte requires 1 byte, int uses 4 bytes, etc.) and directly contain their data. Reference types require dynamic amounts of memory (e.g. “Bob” and “Bobby”). Stack memory Stores values of value types and memory location of reference types in Heap Memory Heap memory Stores reference types

  27. Most commonly used types string int double bool char

  28. Classes Python C# Syntax: [scope][static] class name : baseClass { [properties] [methods] [events] etc. } Syntax: class name([baseClass]): [properties (data)] [methods]

  29. Variables Python C# Variable is case-sensitive name associated with a value of a specific type Type defined in variable declaration statement • Variable is case-sensitive name associated with a value of any type • Type defined after assignment

  30. Variable declaration/initialization • <type> <variableName> {= initialValue}; int x; // Declare variable x = 3; // Initialize variable int x = 3; // Declare and initialize int x, y, z; // Not recommended // Declare on separate lines

  31. Rules for variable naming Same for Python and C# Variable name syntax: • _ or letter + any number of letters, digits, or _ • i.e. cannot begin with a number Use names that describe the data they are associated with • e.g. “recordCount” is better than “n” Use lowercase letter for first character, upper case letter for other words in name. This is called camelCase. Cannot be a keyword of the language

  32. Operators Python C# +, -, *, /, % same as Python Math.Pow(2,3) • +, -, *, /, % same as C# • 2**3 is 23 Output: 0 0.5 0.5

  33. C# Operators and Expressions <variable> = <operand> <operator> <operand> <variable> <operator> <operand> <variable> <operator> // x = x + 1, z = x + 1 // x = x + 1, z = x // x = x - 1, z = x – 1 // x = x - 1, z = x p. 46, 47 in Watson et al. ++x add before expression evaluated x++ add after expression evaluated

  34. Operator Precedence Same for Python and C# • Parentheses/Brackets • Exponentiation • Muliplication – Division • Addition - Subtraction Output: 17

  35. Operator polymorphism Python C# + addition+ string concatenation + addition+ string concatenation * multiplication * string repetition

  36. Comments comments with // Python C# // Comment out single line /* Comment out multiple lines */

  37. C# Comments Examples //, ///, /* */ “The best kind of comments are the ones you don't need. Allow me to clarify that point. You should first strive to make your code as simple as possible to understand without relying on comments as a crutch. Only at the point where the code cannotbe made easier to understand should you begin to add comments.” From http://www.codinghorror.com/blog/archives/000749.html

  38. Functions – Syntax for Definition Python C# Syntax: [scope][static] type name ([params]) { statements [return [value];] } scope keywords include public, internal (default), protected, protected internal, private If static is included, function belongs to class instead of instance of class type refers to type returned by function Can be any type including user-defined types. Is “void” if it returns nothing params include type (e.g. string param1) Syntax: def name([params]): statements [return value]

  39. Functions – Define and call Syntax: [scope][static] type name ([params]) { statements [return [value];] } Define: Call:

  40. Scope “Visibility” of variables, functions, classes, etc in a program. Class: [scope][static] class name Function: [scope][static] type name ([params]) Variables: [scope][static] type name [= value];

  41. Scope “Visibility” of variables, functions, classes, etc in a program. Python C#

  42. Scope Review public internal (default) protected Entire solution private More … Assembly only More … Derived classes More … Class only More … 42 of 29

  43. Booleans Python C# True value: true False value: false

  44. Boolean Operators Python C# |, ||, &, && or, and Comparison operators are the same for Python and C#

  45. Flow control - Branching

  46. Flow control - Branching Python C# if (condition) { // Statements for true // condition } else if (condition) { // Statements for alternate // true condition else { // if all above conditions // are false } if condition: # Statements for true # condition elif condition: # Statements for alternate # true condition else: # if all above conditions # are false

  47. Branching with if

  48. Branching with switch

  49. Replacing simple if … else • If the “if … else” is being used to simply set a boolean variable, set the variable using a boolean assignment statement Replace this with or

  50. Ternary (conditional) Operator ? • Used to set a non-bool type variable based on a condition Syntax: variable = condition ? true_expression : false_expression Replace this with or

More Related